mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-14 19:03:20 +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>
|
</div>
|
||||||
<main class="tab-stage">
|
<main class="tab-stage">
|
||||||
<section id="overview" class="tab-panel tab-panel-active" role="tabpanel" aria-labelledby="tab-overview">
|
<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">
|
<article class="metric-tile">
|
||||||
<div class="metric-tile-top">
|
<div class="metric-label">Temperature</div>
|
||||||
<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-value">
|
<div class="metric-value">
|
||||||
<span class="metric-number">12.5</span>
|
<span class="metric-number">24.8</span>
|
||||||
<span class="metric-unit">V</span>
|
<span class="metric-unit">°C</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="metric-status metric-status-good">Stable — within target range</div>
|
||||||
</article>
|
</article>
|
||||||
<article class="metric-tile">
|
<article class="metric-tile">
|
||||||
<div class="metric-tile-top">
|
<div class="metric-label">Humidity</div>
|
||||||
<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-value">
|
<div class="metric-value">
|
||||||
<span class="metric-number">4.2</span>
|
<span class="metric-number">51</span>
|
||||||
<span class="metric-unit">A</span>
|
<span class="metric-unit">%</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="metric-status metric-status-good">+2% in the last hour</div>
|
||||||
</article>
|
</article>
|
||||||
<article class="metric-tile">
|
<article class="metric-tile">
|
||||||
<div class="metric-tile-top">
|
<div class="metric-label">CPU Load</div>
|
||||||
<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-value">
|
<div class="metric-value">
|
||||||
<span class="metric-number">52.5</span>
|
<span class="metric-number">37</span>
|
||||||
<span class="metric-unit">W</span>
|
<span class="metric-unit">%</span>
|
||||||
</div>
|
</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>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -149,57 +149,37 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.overview-grid {
|
.overview-grid {
|
||||||
display: flex;
|
display: grid;
|
||||||
flex-wrap: wrap;
|
grid-template-columns: repeat(4, 1fr);
|
||||||
align-items: flex-start;
|
gap: 1rem;
|
||||||
justify-content: flex-start;
|
|
||||||
gap: 0.45rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.metric-tile {
|
.metric-tile {
|
||||||
flex: 0 0 auto;
|
padding: 1.25rem 1.5rem 1.2rem;
|
||||||
width: 8.75rem;
|
border-radius: 1rem;
|
||||||
min-height: 0;
|
background: #ffffff;
|
||||||
padding: 0.5rem 0.6rem 0.55rem;
|
border: 1px solid rgba(203, 213, 225, 0.75);
|
||||||
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);
|
|
||||||
box-shadow:
|
box-shadow:
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.9),
|
inset 0 1px 0 rgba(255, 255, 255, 1),
|
||||||
0 4px 10px rgba(148, 163, 184, 0.08);
|
0 2px 6px rgba(148, 163, 184, 0.1),
|
||||||
}
|
0 8px 24px rgba(148, 163, 184, 0.08);
|
||||||
|
|
||||||
.metric-tile-top {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
gap: 0.35rem;
|
||||||
margin-bottom: 0.3rem;
|
transition: box-shadow 0.15s ease, transform 0.15s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.metric-chip {
|
.metric-tile:hover {
|
||||||
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);
|
|
||||||
box-shadow:
|
box-shadow:
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.84),
|
inset 0 1px 0 rgba(255, 255, 255, 1),
|
||||||
0 2px 6px rgba(148, 163, 184, 0.08);
|
0 4px 12px rgba(148, 163, 184, 0.18),
|
||||||
}
|
0 12px 32px rgba(148, 163, 184, 0.12);
|
||||||
|
transform: translateY(-1px);
|
||||||
.metric-icon {
|
|
||||||
width: 0.68rem;
|
|
||||||
height: 0.68rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.metric-label {
|
.metric-label {
|
||||||
color: #5d7088;
|
color: #7d94ac;
|
||||||
font-size: 0.58rem;
|
font-size: 0.82rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 0.06em;
|
letter-spacing: 0.06em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -208,29 +188,53 @@ body {
|
|||||||
.metric-value {
|
.metric-value {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
gap: 0.16rem;
|
gap: 0.2rem;
|
||||||
color: #18314f;
|
color: #18314f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.metric-number {
|
.metric-number {
|
||||||
font-size: 1.18rem;
|
font-size: 2rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: -0.025em;
|
letter-spacing: -0.04em;
|
||||||
line-height: 1;
|
line-height: 1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.metric-unit {
|
.metric-unit {
|
||||||
color: var(--color-text-muted);
|
font-size: 1rem;
|
||||||
font-size: 0.62rem;
|
font-weight: 600;
|
||||||
font-weight: 700;
|
color: #4a6580;
|
||||||
letter-spacing: 0.04em;
|
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] {
|
.tab-panel[hidden] {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 840px) {
|
@media (max-width: 900px) {
|
||||||
|
.overview-grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
.overview-grid {
|
.overview-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user