/
spirzen
/
it-knowledge-base
Обзор
Документация
Войти
/
spirzen
/
it-knowledge-base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Mobile
src/components/RedisCacheDemo.module.css
257 строк
5 KB
Spirzen
Ultra Mega Components Buff
20 май 2026, 03:14
20 май 2026, 03:14
3a2dddc
Код
Авторство
О чём код?
.root { --redis-node: #c62828; --db-node: #1565c0; --app-node: var(--ifm-color-primary); --hit-color: #2e7d32; --miss-color: #ed6c02; } .diagram { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: stretch; gap: 0.5rem; margin: 1rem 0 0.75rem; } @media (max-width: 900px) { .diagram { grid-template-columns: 1fr; } .trackCol { min-height: 2rem; flex-direction: row; } } .node { display: flex; flex-direction: column; min-height: 11rem; border-radius: 10px; border: 2px solid var(--demo-border, var(--ifm-color-emphasis-300)); background: var(--ifm-background-surface-color); overflow: hidden; transition: border-color 0.3s ease, box-shadow 0.3s ease, opacity 0.3s ease; } .nodeIdle { opacity: 0.78; } .nodeAppActive { border-color: var(--app-node); box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-node) 22%, transparent); } .nodeRedisActive { border-color: var(--redis-node); box-shadow: 0 0 0 3px color-mix(in srgb, var(--redis-node) 20%, transparent); } .nodeDbActive { border-color: var(--db-node); box-shadow: 0 0 0 3px color-mix(in srgb, var(--db-node) 20%, transparent); } .nodeHead { padding: 0.55rem 0.75rem; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--demo-muted, var(--ifm-color-content-secondary)); border-bottom: 1px solid var(--demo-border, var(--ifm-color-emphasis-200)); background: var(--ifm-background-color); display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; } .nodeBody { flex: 1; padding: 0.65rem 0.75rem; font-size: 0.8rem; line-height: 1.45; } .trackCol { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.25rem; min-width: 2.5rem; } .trackArrow { font-size: 1.1rem; color: var(--demo-muted, var(--ifm-color-content-secondary)); opacity: 0.35; transition: opacity 0.25s ease, color 0.25s ease; } .trackArrowActive { opacity: 1; color: var(--ifm-color-primary); } .keyList { margin: 0; padding: 0; list-style: none; } .keyItem { padding: 0.45rem 0.5rem; margin-bottom: 0.35rem; border-radius: 6px; background: var(--ifm-background-color); border: 1px solid var(--demo-border, var(--ifm-color-emphasis-200)); font-family: var(--ifm-font-family-monospace); font-size: 0.72rem; } .keyItemExpired { opacity: 0.55; border-style: dashed; } .keyName { color: var(--redis-node); font-weight: 600; word-break: break-all; } .ttlBadge { display: inline-block; margin-top: 0.25rem; padding: 0.1rem 0.35rem; border-radius: 4px; font-size: 0.68rem; background: color-mix(in srgb, var(--redis-node) 12%, transparent); color: var(--redis-node); } .emptyHint { margin: 0; color: var(--demo-muted, var(--ifm-color-content-secondary)); font-size: 0.78rem; } .jsonPre { margin: 0.35rem 0 0; padding: 0.45rem; border-radius: 6px; font-size: 0.68rem; line-height: 1.4; background: var(--ifm-code-background); overflow-x: auto; white-space: pre-wrap; word-break: break-word; } .statsGrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; margin: 0.75rem 0; } @media (max-width: 640px) { .statsGrid { grid-template-columns: repeat(2, 1fr); } } .statCard { padding: 0.55rem 0.65rem; border-radius: 8px; border: 1px solid var(--demo-border, var(--ifm-color-emphasis-200)); background: var(--ifm-background-surface-color); text-align: center; } .statValue { display: block; font-size: 1.15rem; font-weight: 700; font-variant-numeric: tabular-nums; } .statLabel { display: block; margin-top: 0.15rem; font-size: 0.68rem; color: var(--demo-muted, var(--ifm-color-content-secondary)); } .statHit { color: var(--hit-color); } .statMiss { color: var(--miss-color); } .resultBanner { margin: 0.5rem 0 0; padding: 0.55rem 0.75rem; border-radius: 8px; font-size: 0.82rem; line-height: 1.45; } .resultHit { background: color-mix(in srgb, var(--hit-color) 12%, transparent); border: 1px solid color-mix(in srgb, var(--hit-color) 35%, transparent); } .resultMiss { background: color-mix(in srgb, var(--miss-color) 12%, transparent); border: 1px solid color-mix(in srgb, var(--miss-color) 35%, transparent); } .desc { margin: 0.5rem 0 0; font-size: 0.85rem; line-height: 1.5; color: var(--ifm-color-content-secondary); } .controls { flex-wrap: wrap; gap: 0.5rem; align-items: center; } .ttlRow { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; } .ttlRow input[type='range'] { width: 6rem; } .logTitle { margin: 0.75rem 0 0.35rem; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--demo-muted, var(--ifm-color-content-secondary)); } .logTime { opacity: 0.65; margin-right: 0.35rem; font-variant-numeric: tabular-nums; }