/
webru
/
prisma-ui
Обзор
Документация
Войти
/
webru
/
prisma-ui
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ops-data.css
278 строк
6 KB
webru
Add Ops narrative patterns, node detail demo, and UI conventions.
14 июн 2026, 14:28
14 июн 2026, 14:28
47b1546
Код
Авторство
О чём код?
/** * Prisma UI — Data display: log viewer, charts, enhanced tables */ /* ── Log viewer ─────────────────────────────────────────────────── */ .ops-log { margin: 0; padding: 10px 12px; max-height: 280px; overflow: auto; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg); font-family: var(--mono-datetime); font-size: 0.72rem; line-height: 1.5; font-variant-numeric: tabular-nums lining-nums; color: var(--muted); white-space: pre-wrap; word-break: break-word; } .ops-log__line { display: block; } .ops-log__line--info { color: var(--muted); } .ops-log__line--warn { color: var(--warn); } .ops-log__line--err { color: var(--danger-text-strong); } .ops-log__ts { color: var(--mono-data); margin-right: 8px; } /* ── Chart container ────────────────────────────────────────────── */ .ops-chart { border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--panel); overflow: hidden; } .ops-chart__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; border-bottom: 1px solid var(--border-subtle); } .ops-chart__title { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); } .ops-chart__legend { display: flex; flex-wrap: wrap; gap: 10px; font-size: 0.68rem; color: var(--muted); } .ops-chart__legend-item { display: inline-flex; align-items: center; gap: 4px; } .ops-chart__legend-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); } .ops-chart__legend-dot--warn { background: var(--warn); } .ops-chart__body { min-height: 160px; padding: 12px; display: flex; align-items: flex-end; gap: 4px; } .ops-chart__bar { flex: 1; min-width: 8px; max-width: 24px; border-radius: var(--radius-sm) var(--radius-sm) 0 0; background: rgba(59, 130, 246, 0.45); box-shadow: 0 0 6px var(--accent-glow); } .ops-chart__bar--warn { background: rgba(245, 158, 11, 0.5); box-shadow: 0 0 6px var(--warn-glow); } /* ── Table: sticky header ───────────────────────────────────────── */ .ops-grid-table-wrap--sticky { max-height: 320px; overflow-x: hidden; overflow-y: auto; } .ops-grid-table-wrap--sticky.ops-grid-table-wrap--scroll-x { overflow-x: auto; } .ops-grid-table-wrap--sticky .ops-grid-table thead th { position: sticky; top: 0; z-index: 2; box-shadow: 0 1px 0 var(--border); } /* ── Table: sortable headers ────────────────────────────────────── */ .ops-grid-table th.ops-th-sort { cursor: pointer; user-select: none; } .ops-grid-table th.ops-th-sort:hover { color: var(--text); } .ops-th-sort__icon { margin-left: 4px; opacity: 0.45; font-size: 0.6rem; } .ops-th-sort.is-sorted-asc .ops-th-sort__icon, .ops-th-sort.is-sorted-desc .ops-th-sort__icon { opacity: 1; color: var(--accent-soft-text); } /* ── Table: row selection ───────────────────────────────────────── */ .ops-grid-table tbody tr.is-selected td { background: rgba(59, 130, 246, 0.1); } .ops-grid-table .ops-check { margin: 0; } .ops-table-bulk { display: none; align-items: center; gap: 8px; padding: 6px 10px; margin-bottom: 8px; border: 1px solid rgba(59, 130, 246, 0.35); border-radius: var(--radius-md); background: rgba(59, 130, 246, 0.06); font-size: 0.74rem; } .ops-table-bulk.is-visible { display: flex; } .ops-table-bulk__count { color: var(--muted); } .ops-table-bulk__count .ops-mono { font-size: inherit; } /* ── Drawer (detail panel) ──────────────────────────────────────── */ .ops-drawer-backdrop { position: fixed; inset: 0; z-index: 1500; background: rgba(0, 0, 0, 0.4); opacity: 0; visibility: hidden; transition: opacity 0.15s ease, visibility 0.15s ease; } .ops-drawer-backdrop.is-open { opacity: 1; visibility: visible; } .ops-drawer { position: fixed; z-index: 1501; top: var(--topbar-height); right: 0; width: min(360px, 100vw); height: calc(100vh - var(--topbar-height)); height: calc(100dvh - var(--topbar-height)); border-left: 1px solid var(--border); background: var(--panel); box-shadow: var(--shadow-sidebar); transform: translateX(100%); transition: transform 0.18s ease; display: flex; flex-direction: column; } .ops-drawer-backdrop.is-open .ops-drawer { transform: translateX(0); } .ops-drawer__head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid var(--border); } .ops-drawer__title { margin: 0; font-size: 0.82rem; font-weight: 600; } .ops-drawer__body { flex: 1; overflow-y: auto; padding: 12px; } .ops-drawer__field { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border-subtle); font-size: 0.76rem; } .ops-drawer__field:last-child { border-bottom: none; } .ops-drawer__field-label { color: var(--muted); font-size: 0.68rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; flex-shrink: 0; } .ops-drawer__field-value { text-align: right; min-width: 0; }