mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-14 10:20:01 +00:00
Tiles
This commit is contained in:
1 parent
56716b5eba
commit
b68da7f759
2 files changed
+74
-82
No files matched your search
@@ -85,50 +85,38 @@
|
||||
</div>
|
||||
<main class="tab-stage">
|
||||
<section id="overview" class="tab-panel tab-panel-active" role="tabpanel" aria-labelledby="tab-overview">
|
||||
<div class="overview-grid" aria-label="Electrical overview">
|
||||
<div class="overview-grid" aria-label="Device metrics overview">
|
||||
<article class="metric-tile">
|
||||
<div class="metric-tile-top">
|
||||
<div class="metric-label">VOLTAGE</div>
|
||||
<span class="metric-chip">
|
||||
<svg viewBox="0 0 24 24" class="metric-icon" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M13 2 6 14h5l-1 8 7-12h-5z" />
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
<div class="metric-label">Temperature</div>
|
||||
<div class="metric-value">
|
||||
<span class="metric-number">12.5</span>
|
||||
<span class="metric-unit">V</span>
|
||||
<span class="metric-number">24.8</span>
|
||||
<span class="metric-unit">°C</span>
|
||||
</div>
|
||||
<div class="metric-status metric-status-good">Stable — within target range</div>
|
||||
</article>
|
||||
<article class="metric-tile">
|
||||
<div class="metric-tile-top">
|
||||
<div class="metric-label">CURRENT</div>
|
||||
<span class="metric-chip">
|
||||
<svg viewBox="0 0 24 24" class="metric-icon" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M4 12h4l2-6 4 12 2-6h4" />
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
<div class="metric-label">Humidity</div>
|
||||
<div class="metric-value">
|
||||
<span class="metric-number">4.2</span>
|
||||
<span class="metric-unit">A</span>
|
||||
<span class="metric-number">51</span>
|
||||
<span class="metric-unit">%</span>
|
||||
</div>
|
||||
<div class="metric-status metric-status-good">+2% in the last hour</div>
|
||||
</article>
|
||||
<article class="metric-tile">
|
||||
<div class="metric-tile-top">
|
||||
<div class="metric-label">POWER</div>
|
||||
<span class="metric-chip">
|
||||
<svg viewBox="0 0 24 24" class="metric-icon" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M12 3v8" />
|
||||
<path d="M7 8h10" />
|
||||
<rect x="5" y="11" width="14" height="8" rx="2" />
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
<div class="metric-label">CPU Load</div>
|
||||
<div class="metric-value">
|
||||
<span class="metric-number">52.5</span>
|
||||
<span class="metric-unit">W</span>
|
||||
<span class="metric-number">37</span>
|
||||
<span class="metric-unit">%</span>
|
||||
</div>
|
||||
<div class="metric-status metric-status-warn">Moderate load</div>
|
||||
</article>
|
||||
<article class="metric-tile">
|
||||
<div class="metric-label">Free Memory</div>
|
||||
<div class="metric-value">
|
||||
<span class="metric-number">182</span>
|
||||
<span class="metric-unit">KB</span>
|
||||
</div>
|
||||
<div class="metric-status metric-status-good">Healthy headroom</div>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -149,57 +149,37 @@ body {
|
||||
}
|
||||
|
||||
.overview-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
gap: 0.45rem;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.metric-tile {
|
||||
flex: 0 0 auto;
|
||||
width: 8.75rem;
|
||||
min-height: 0;
|
||||
padding: 0.5rem 0.6rem 0.55rem;
|
||||
border-radius: 0.7rem;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(245, 249, 253, 0.92) 100%);
|
||||
border: 1px solid rgba(203, 213, 225, 0.8);
|
||||
padding: 1.25rem 1.5rem 1.2rem;
|
||||
border-radius: 1rem;
|
||||
background: #ffffff;
|
||||
border: 1px solid rgba(203, 213, 225, 0.75);
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.9),
|
||||
0 4px 10px rgba(148, 163, 184, 0.08);
|
||||
}
|
||||
|
||||
.metric-tile-top {
|
||||
inset 0 1px 0 rgba(255, 255, 255, 1),
|
||||
0 2px 6px rgba(148, 163, 184, 0.1),
|
||||
0 8px 24px rgba(148, 163, 184, 0.08);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0.3rem;
|
||||
flex-direction: column;
|
||||
gap: 0.35rem;
|
||||
transition: box-shadow 0.15s ease, transform 0.15s ease;
|
||||
}
|
||||
|
||||
.metric-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 1.3rem;
|
||||
height: 1.3rem;
|
||||
border-radius: 0.42rem;
|
||||
color: #4f6f93;
|
||||
background: linear-gradient(180deg, rgba(232, 239, 245, 0.98) 0%, rgba(219, 229, 239, 0.92) 100%);
|
||||
border: 1px solid rgba(191, 204, 219, 0.72);
|
||||
.metric-tile:hover {
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.84),
|
||||
0 2px 6px rgba(148, 163, 184, 0.08);
|
||||
}
|
||||
|
||||
.metric-icon {
|
||||
width: 0.68rem;
|
||||
height: 0.68rem;
|
||||
inset 0 1px 0 rgba(255, 255, 255, 1),
|
||||
0 4px 12px rgba(148, 163, 184, 0.18),
|
||||
0 12px 32px rgba(148, 163, 184, 0.12);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.metric-label {
|
||||
color: #5d7088;
|
||||
font-size: 0.58rem;
|
||||
color: #7d94ac;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
@@ -208,29 +188,53 @@ body {
|
||||
.metric-value {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 0.16rem;
|
||||
gap: 0.2rem;
|
||||
color: #18314f;
|
||||
}
|
||||
|
||||
.metric-number {
|
||||
font-size: 1.18rem;
|
||||
font-size: 2rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.025em;
|
||||
line-height: 1;
|
||||
letter-spacing: -0.04em;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.metric-unit {
|
||||
color: var(--color-text-muted);
|
||||
font-size: 0.62rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.04em;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: #4a6580;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
.metric-status {
|
||||
font-size: 0.78rem;
|
||||
font-weight: 600;
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
.metric-status-good {
|
||||
color: #16a34a;
|
||||
}
|
||||
|
||||
.metric-status-warn {
|
||||
color: #d97706;
|
||||
}
|
||||
|
||||
.metric-status-info {
|
||||
color: #0369a1;
|
||||
}
|
||||
|
||||
.tab-panel[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 840px) {
|
||||
@media (max-width: 900px) {
|
||||
.overview-grid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.overview-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user