front/src/assets/style/stat-card.less
zzh b5edbb8447 feat: 页面背景预设与工作台增强,优化官网与登录体验
新增石米等淡色背景预设并设为默认,修复页面配置抽屉偶发不弹出问题,移除登录欢迎卡;同步 IDE 官网导航与背景样式,并扩展管理端工作台统计展示。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 10:59:10 +08:00

235 lines
4.5 KiB
Plaintext

.stat-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.stat-card {
--liquid-a: rgba(var(--primary-6), 0.1);
--liquid-b: rgba(var(--primary-6), 0.06);
--liquid-edge: var(--app-acrylic-border, rgba(255, 255, 255, 0.72));
--liquid-glow: transparent;
position: relative;
z-index: 0;
display: flex;
flex-direction: column;
gap: 6px;
overflow: hidden;
isolation: isolate;
min-height: 88px;
margin: 0;
padding: 14px 16px 12px;
border: 1px solid var(--liquid-edge);
border-radius: 18px;
background: var(--app-acrylic-bg, rgba(255, 255, 255, 0.32));
box-shadow: none;
backdrop-filter: var(--app-acrylic-blur, blur(28px) saturate(160%));
-webkit-backdrop-filter: var(--app-acrylic-blur, blur(28px) saturate(160%));
text-align: left;
font: inherit;
color: inherit;
cursor: default;
transition:
border-color 0.2s ease,
background 0.2s ease,
color 0.2s ease;
&__blob,
&__shine {
display: none;
}
&__blob,
&__shine,
&__main,
&__hint {
position: relative;
z-index: 1;
}
&--primary {
--liquid-a: rgba(var(--primary-6), 0.12);
--liquid-b: rgba(var(--primary-6), 0.08);
}
&--warning {
--liquid-a: rgba(255, 125, 0, 0.12);
--liquid-b: rgba(255, 182, 93, 0.08);
}
&--danger {
--liquid-a: rgba(245, 63, 63, 0.12);
--liquid-b: rgba(249, 137, 129, 0.08);
&.stat-card--alert .stat-card__value {
color: #f98981;
}
}
&--success {
--liquid-a: rgba(0, 180, 42, 0.1);
--liquid-b: rgba(76, 210, 99, 0.08);
}
&--neutral {
--liquid-a: rgba(var(--primary-6), 0.08);
--liquid-b: rgba(var(--primary-6), 0.05);
}
&--alert {
border-color: color-mix(in srgb, var(--app-primary-color) 22%, var(--app-acrylic-border));
}
&--clickable {
cursor: pointer;
&:hover {
border-color: var(--app-acrylic-border-strong, rgba(255, 255, 255, 0.92));
background: var(--app-acrylic-hover-bg, rgba(255, 255, 255, 0.44));
box-shadow: none;
transform: none;
.stat-card__hint {
opacity: 1;
}
}
&:active {
transform: none;
}
&:focus-visible {
outline: 2px solid var(--app-primary-color, rgb(var(--primary-6)));
outline-offset: 2px;
}
}
&__main {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
min-width: 0;
flex: 1;
}
&__meta {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 6px;
min-width: 0;
}
&__avatar {
flex-shrink: 0;
background-color: transparent;
filter: none;
:deep(img) {
width: 48px;
height: 48px;
object-fit: contain;
}
}
&__avatar--icon {
display: inline-flex;
align-items: center;
justify-content: center;
background: transparent !important;
color: var(--app-primary-color, rgb(var(--primary-6)));
font-size: 22px;
}
&__label {
color: var(--color-text-3);
font-size: 12px;
line-height: 1.3;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&__body {
display: flex;
align-items: baseline;
justify-content: flex-end;
gap: 4px;
flex-shrink: 0;
min-width: 0;
}
&__value {
color: var(--color-text-1);
font-size: 28px;
font-weight: 700;
font-variant-numeric: tabular-nums;
line-height: 1;
letter-spacing: -0.02em;
text-shadow: none;
}
&__unit {
color: var(--color-text-3);
font-size: 12px;
font-weight: 500;
}
&__arrow {
color: var(--color-text-4);
font-size: 16px;
transition: color 0.25s ease, transform 0.25s ease;
}
&--clickable:hover &__arrow {
color: var(--app-primary-color, rgb(var(--primary-6)));
transform: translateX(2px);
}
&__trend {
display: inline-flex;
align-items: center;
gap: 2px;
margin-left: 2px;
font-size: 13px;
font-weight: 600;
&.is-up {
color: #f53f3f;
}
&.is-down {
color: #00b42a;
}
}
&__hint {
margin-top: auto;
color: var(--color-text-4, #c9cdd4);
font-size: 11px;
line-height: 1.2;
text-align: right;
opacity: 0;
transition: opacity 0.25s ease;
}
}
@media (max-width: 1280px) {
.stat-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 720px) {
.stat-grid {
grid-template-columns: repeat(1, minmax(0, 1fr));
}
.stat-card__hint {
display: none;
}
}