Files
kmtnflower/src/app/admin/admin-stats-dashboard.component.scss
T

197 lines
4.0 KiB
SCSS

@use '../../styles/variables' as *;
@use '../../styles/mixins' as *;
.stats-dashboard {
padding: $spacing-md;
}
// ── Controls ──────────────────────────────────────────────
.stats-controls {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: $spacing-md;
margin-bottom: $spacing-lg;
}
.preset-buttons {
display: flex;
flex-wrap: wrap;
gap: $spacing-xs;
}
.preset-btn {
background: $neutral-white;
border: 1px solid $neutral-light;
border-radius: $radius-md;
padding: $spacing-xs $spacing-md;
font-size: 0.85rem;
font-weight: 600;
color: $neutral-dark;
cursor: pointer;
transition: all $transition-fast;
&:hover {
border-color: $primary-blue-muted;
color: $primary-blue;
}
&.active {
background: $primary-blue;
border-color: $primary-blue;
color: $neutral-white;
}
}
.custom-dates {
display: flex;
gap: $spacing-sm;
align-items: center;
label {
font-size: 0.85rem;
color: $neutral-medium;
display: flex;
align-items: center;
gap: $spacing-xs;
}
input[type="date"] {
padding: $spacing-xs $spacing-sm;
border: 1px solid $neutral-light;
border-radius: $radius-sm;
font-size: 0.85rem;
}
}
.btn-parse {
@include button-style($success-green, $neutral-white, darken($success-green, 8%));
margin-left: auto;
}
.parse-progress {
background: rgba($info-blue, 0.1);
color: $info-blue;
padding: $spacing-sm $spacing-md;
border-radius: $radius-md;
font-size: 0.85rem;
margin-bottom: $spacing-md;
}
.error-message {
background: rgba(#d32f2f, 0.1);
color: #d32f2f;
padding: $spacing-sm $spacing-md;
border-radius: $radius-md;
font-size: 0.85rem;
margin-bottom: $spacing-md;
}
// ── Summary cards ─────────────────────────────────────────
.stats-summary {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: $spacing-md;
margin-bottom: $spacing-lg;
}
.stat-card {
@include card-style;
padding: $spacing-lg;
text-align: center;
.stat-value {
font-family: $font-heading;
font-size: 2rem;
color: $primary-blue;
margin-bottom: $spacing-xs;
}
.stat-label {
font-size: 0.85rem;
color: $neutral-medium;
text-transform: uppercase;
letter-spacing: 0.5px;
}
}
// ── Map ───────────────────────────────────────────────────
.map-section {
@include card-style;
padding: $spacing-lg;
margin-bottom: $spacing-lg;
h3 {
font-family: $font-heading;
color: $primary-blue;
margin: 0 0 $spacing-md;
}
}
.map-container {
height: 400px;
border-radius: $radius-md;
overflow: hidden;
position: relative;
.map-leaflet {
width: 100%;
height: 100%;
}
}
// ── Chart ─────────────────────────────────────────────────
.chart-section {
@include card-style;
padding: $spacing-lg;
margin-bottom: $spacing-lg;
h3 {
font-family: $font-heading;
color: $primary-blue;
margin: 0 0 $spacing-md;
}
}
.chart-container {
height: 300px;
position: relative;
}
// ── Geo table ─────────────────────────────────────────────
.geo-table-section {
@include card-style;
padding: $spacing-lg;
h3 {
font-family: $font-heading;
color: $primary-blue;
margin: 0 0 $spacing-md;
}
}
// ── Responsive ────────────────────────────────────────────
@include responsive(md) {
.stats-controls {
flex-direction: column;
align-items: flex-start;
}
.btn-parse {
margin-left: 0;
}
.map-container {
height: 280px;
}
.chart-container {
height: 220px;
}
}