/
h0tnanny
/
IotPlatform
Обзор
Документация
Войти
/
h0tnanny
/
IotPlatform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
client/src/components/StateViewer/StateViewer.module.scss
248 строк
4 KB
h0tnanny
added border
01 фев 2026, 21:29
01 фев 2026, 21:29
a058520
Код
Авторство
О чём код?
.container { animation: slideUp 0.4s ease; } .header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--spacing-xl); h1 { font-size: 2rem; font-weight: 700; margin-bottom: var(--spacing-sm); } } .subtitle { color: var(--color-text-secondary); font-size: 1.1rem; } .refreshBtn { display: flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-md) var(--spacing-lg); background: var(--color-primary); color: white; border: none; border-radius: var(--radius-md); font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; &:hover { background: var(--color-primary-dark); } } .loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--spacing-md); min-height: 400px; font-size: 1.2rem; color: var(--color-text-secondary); } .loadingIcon { animation: spin 2s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .content { display: flex; flex-direction: column; gap: var(--spacing-xl); } .section { h2 { font-size: 1.5rem; font-weight: 600; margin-bottom: var(--spacing-lg); } } .equipmentGrid, .workflowsGrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); gap: var(--spacing-lg); } .equipmentCard, .workflowCard { background: var(--color-bg-secondary); border: 2px solid var(--border-card, #9ca3af); border-radius: var(--radius-lg); padding: var(--spacing-lg); transition: all 0.3s ease; &:hover { border-color: var(--color-primary); transform: translateY(-2px); box-shadow: var(--shadow-lg); } } .cardHeader { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); h3 { font-size: 1.3rem; font-weight: 600; } } .badge { display: flex; align-items: center; gap: var(--spacing-xs); padding: var(--spacing-xs) var(--spacing-sm); background: rgba(59, 130, 246, 0.2); color: var(--color-primary); border-radius: var(--radius-sm); font-size: 0.875rem; font-weight: 500; } .status { padding: var(--spacing-xs) var(--spacing-md); border-radius: var(--radius-sm); font-size: 0.875rem; font-weight: 500; &.active { background: rgba(16, 185, 129, 0.2); color: #10b981; } &.inactive { background: rgba(148, 163, 184, 0.2); color: var(--color-text-secondary); } } .variablesList { display: flex; flex-direction: column; gap: var(--spacing-sm); } .variableRow { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm) var(--spacing-md); background: var(--color-bg-tertiary); border-radius: var(--radius-sm); gap: var(--spacing-md); } .variableInfo { display: flex; flex-direction: column; gap: var(--spacing-xs); min-width: 0; flex: 1; } .varName { font-weight: 500; font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .varType { font-size: 0.75rem; color: var(--color-text-secondary); font-family: 'Fira Code', monospace; } .varValue { font-weight: 600; font-size: 1.1rem; color: var(--color-secondary); font-family: 'Fira Code', monospace; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .workflowInfo { display: flex; flex-direction: column; gap: var(--spacing-sm); margin-bottom: var(--spacing-lg); } .infoItem { display: flex; align-items: center; gap: var(--spacing-sm); font-size: 0.9rem; } .label { color: var(--color-text-secondary); } .value { font-weight: 500; font-family: 'Fira Code', monospace; color: var(--color-text); } .subheading { font-size: 1rem; font-weight: 600; margin-top: var(--spacing-md); margin-bottom: var(--spacing-sm); color: var(--color-text-secondary); } .nodesList { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); } .nodeChip { padding: var(--spacing-xs) var(--spacing-md); background: var(--color-bg-tertiary); border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-size: 0.875rem; font-family: 'Fira Code', monospace; color: var(--color-text-secondary); } .emptyMessage { grid-column: 1 / -1; text-align: center; padding: var(--spacing-xl); color: var(--color-text-secondary); font-size: 1.1rem; background: var(--color-bg-secondary); border: 1px dashed var(--color-border); border-radius: var(--radius-lg); }