Done config

This commit is contained in:
Martino Ferrari
2026-06-21 17:40:04 +02:00
parent b0ac044035
commit 04d31a15c4
8 changed files with 897 additions and 80 deletions
+214
View File
@@ -1084,10 +1084,14 @@ body {
}
.toolbar-btn {
display: inline-flex;
align-items: center;
justify-content: center;
background: #2d3748;
border: none;
color: #e2e8f0;
font-size: 0.8rem;
line-height: 1.2;
padding: 0.25rem 0.75rem;
border-radius: 4px;
cursor: pointer;
@@ -3495,6 +3499,13 @@ kbd {
overflow: hidden;
}
.cl-modal-full {
width: 98vw;
height: 96vh;
max-width: none;
max-height: none;
}
.cl-confirm-overlay {
position: fixed;
inset: 0;
@@ -3775,6 +3786,16 @@ kbd {
.cl-name-input { width: 240px; }
.cfg-desc {
width: 100%;
box-sizing: border-box;
resize: vertical;
min-height: 2.4rem;
max-height: 6.5rem;
font-family: inherit;
line-height: 1.4;
}
.cl-enable {
display: flex;
align-items: center;
@@ -3984,6 +4005,131 @@ kbd {
margin-left: 0.25rem;
}
.cfg-list-actions {
display: flex;
gap: 0.35rem;
flex: 0 0 auto;
}
/* Type is auto-derived from the bound signal — shown read-only. */
.cfg-type-ro {
display: flex;
align-items: center;
height: 1.9rem;
padding: 0 0.5rem;
border: 1px dashed #2d3748;
border-radius: 4px;
background: #11151f;
color: #94a3b8;
font-size: 0.8rem;
white-space: nowrap;
}
/* ── Parameter tree (group / subgroup organiser) ─────────────────────────── */
.cfg-tree {
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.cfg-tree-toolbar {
display: flex;
gap: 0.4rem;
}
.cfg-tree-group {
border: 1px solid #232a3a;
border-radius: 6px;
background: #12161f;
}
.cfg-tree-ghead {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.3rem 0.5rem;
background: #1a2030;
border-bottom: 1px solid #232a3a;
border-radius: 6px 6px 0 0;
}
.cfg-tree-glabel {
font-size: 0.8rem;
font-weight: 600;
color: #94a3b8;
flex: 1;
}
.cfg-tree-name {
flex: 1;
min-width: 0;
font-weight: 600;
}
.cfg-tree-ghead-actions {
display: flex;
gap: 0.3rem;
flex: 0 0 auto;
}
.cfg-tree-sub {
margin: 0.3rem 0 0.3rem 0.75rem;
border-left: 2px solid #232a3a;
}
.cfg-tree-shead {
display: flex;
align-items: center;
gap: 0.4rem;
padding: 0.25rem 0.5rem;
}
.cfg-tree-sicon { color: #475569; }
.cfg-tree-items {
display: flex;
flex-direction: column;
gap: 0.3rem;
padding: 0.3rem 0.5rem 0.4rem;
}
.cfg-tree-param {
border: 1px solid #232a3a;
border-radius: 5px;
background: #151a26;
}
.cfg-tree-param.dragging { opacity: 0.45; }
.cfg-tree-param.drop-over { border-top: 2px solid #8b5cf6; }
.cfg-tree-ghead.drop-over,
.cfg-tree-shead.drop-over { outline: 2px dashed #8b5cf6; outline-offset: -2px; }
.cfg-tree-phead {
display: flex;
align-items: center;
gap: 0.45rem;
padding: 0.35rem 0.5rem;
cursor: grab;
}
.cfg-tree-phead:active { cursor: grabbing; }
.cfg-drag-handle {
color: #475569;
cursor: grab;
font-size: 0.9rem;
user-select: none;
}
.cfg-tree-toggle {
background: transparent;
border: none;
color: #94a3b8;
cursor: pointer;
font-size: 0.8rem;
padding: 0 0.15rem;
}
.cfg-tree-pkey {
font-family: var(--mono, monospace);
font-size: 0.8rem;
color: #e2e8f0;
}
.cfg-tree-plabel { font-size: 0.78rem; color: #94a3b8; }
.cfg-tree-ptype {
font-size: 0.68rem;
text-transform: uppercase;
letter-spacing: 0.03em;
color: #818cf8;
border: 1px solid #2d3748;
border-radius: 3px;
padding: 0 0.3rem;
}
.cfg-tree-psig { margin-left: auto; font-size: 0.72rem; }
/* ── Instance values ───────────────────────────────────────────────────── */
.cfg-values {
display: flex;
@@ -4140,3 +4286,71 @@ kbd {
.cfg-diff-changed { background: rgba(234, 179, 8, 0.08); }
.cfg-diff-changed .cfg-diff-status { color: #facc15; }
.cfg-diff-unchanged .cfg-diff-status { color: #64748b; }
/* ── Config manager: array value editor ────────────────────────────────── */
.cfg-value-input-array { width: auto; flex: 1; }
.cfg-array { display: flex; flex-direction: column; gap: 0.35rem; }
.cfg-array-bar {
display: flex;
align-items: center;
gap: 0.4rem;
}
.cfg-spark {
background: #0f1117;
border: 1px solid #232a3a;
border-radius: 4px;
flex: 0 0 auto;
}
.cfg-array-info { flex: 0 0 auto; min-width: 4rem; }
.cfg-array-table {
display: flex;
flex-direction: column;
gap: 0.25rem;
padding: 0.4rem;
background: #0f1117;
border: 1px solid #232a3a;
border-radius: 5px;
max-height: 12rem;
overflow-y: auto;
}
.cfg-array-pt {
display: flex;
align-items: center;
gap: 0.4rem;
}
.cfg-array-idx { width: 2rem; text-align: right; flex: 0 0 auto; }
.cfg-array-pt .prop-input { width: 7rem; flex: 0 0 auto; }
.cfg-array-csv {
display: flex;
flex-direction: column;
gap: 0.4rem;
padding: 0.4rem;
background: #0f1117;
border: 1px solid #232a3a;
border-radius: 5px;
}
.cfg-array-textarea {
width: 100%;
resize: vertical;
font-family: ui-monospace, monospace;
flex: none;
}
.cfg-array-plot-body {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.6rem;
padding: 1rem;
}
.cfg-array-stats {
display: flex;
gap: 1.25rem;
font-size: 0.8rem;
}
/* Invalid value highlighting */
.cfg-value-invalid .cfg-value-label { color: #fca5a5; }
.cfg-value-err { color: #f87171; cursor: help; margin-left: 0.25rem; }