From 649ef4b7416ce7053145878841fc9b0bff2f5fec Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 1 Jul 2026 06:32:15 -0400 Subject: feat: admin gui card code unified, unhinged conversation tree GUI sort of implemented --- internal/admin/static/admin.css | 129 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 120 insertions(+), 9 deletions(-) (limited to 'internal/admin/static/admin.css') diff --git a/internal/admin/static/admin.css b/internal/admin/static/admin.css index 93c1924..43354f9 100644 --- a/internal/admin/static/admin.css +++ b/internal/admin/static/admin.css @@ -50,15 +50,126 @@ body{font-family:monospace;background:var(--bg);color:var(--text);min-height:100 .notification.error{border-color:var(--danger)} .notification.success{border-color:var(--success)} @keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} -.talk-tree .node{margin-left:16px;margin-bottom:6px;border-left:2px solid var(--accent);padding-left:10px} -.talk-tree .node-header{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer;font-size:12px} -.talk-tree .node-header .key{color:#6cf;font-weight:bold} -.talk-tree .node-header .preview{color:#aaa;font-size:11px} -.talk-tree .node-children{display:none;padding:4px 0} -.talk-tree .node.open>.node-children,.talk-tree .node.root>.node-children{display:block} -.talk-tree .option{margin-left:10px;padding:3px 6px;font-size:11px;color:#8cf;border-left:1px solid #444} -.talk-tree .add-btn{font-size:10px;padding:2px 6px;background:var(--accent);color:var(--text);border:none;border-radius:2px;cursor:pointer;margin:4px 0} -.talk-tree .add-btn:hover{opacity:.8} +/* talk-tree */ +.talk-tree{margin-top:6px} +.talk-node{margin-left:16px;margin-bottom:8px;border-left:2px solid var(--accent);padding-left:10px} +.talk-node.ref{margin-bottom:4px;font-size:11px;color:#888;border-left-color:#444} +.talk-node.ref .talk-node-key{color:#6cf} +.talk-node-header{display:flex;align-items:center;gap:6px;padding:4px 0;cursor:pointer;font-size:12px;user-select:none} +.talk-node-header .talk-node-arrow{font-size:8px;width:10px;color:#666;flex-shrink:0;text-align:center} +.talk-node.open>.talk-node-header .talk-node-arrow::before{content:'\25BC'} +.talk-node .talk-node-header .talk-node-arrow::before{content:'\25B6'} +.talk-node.open>.talk-node-header .talk-node-arrow::before{content:'\25BC'} +.talk-node-key{color:#6cf;font-weight:bold;white-space:nowrap} +.talk-node-preview{color:#888;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0} +.talk-node-spacer{flex:1} +.talk-node-btn{padding:2px 6px;font-size:10px;border-radius:2px;border:none;cursor:pointer;font-family:monospace} +.talk-node-del{background:var(--danger);color:#fff} +.talk-node-body{display:none;padding:6px 0 2px 0} +.talk-node.open>.talk-node-body{display:block} +.talk-props{padding:0 0 4px 0} +.talk-prop{margin:2px 0;font-size:11px;line-height:1.4} +.talk-prop-label{color:#aaa;font-size:10px;text-transform:uppercase;letter-spacing:.3px;margin-right:4px} +.talk-prop-val{color:var(--text)} +.talk-prop-goto{color:#8cf;font-weight:bold} +.talk-prop-json{color:#888;font-size:10px;background:var(--input-bg);padding:1px 4px;border-radius:2px} +.talk-seq-line{display:flex;gap:6px;margin:2px 0 2px 10px;font-size:11px;color:#bbb;align-items:center} +.talk-seq-num{color:#666;min-width:14px;text-align:right;flex-shrink:0} +.talk-action-summary{color:#e8c47c;font-size:10px} +.talk-options{margin-top:6px;padding-top:4px;border-top:1px solid rgba(255,255,255,.05)} +.talk-options-label{font-size:10px;color:#888;text-transform:uppercase;letter-spacing:.3px} +.talk-option{display:flex;align-items:center;gap:5px;margin:3px 0;padding:3px 6px;font-size:11px;border-left:1px solid #444;border-radius:0 3px 3px 0} +.talk-option-empty{color:#666;font-style:italic;border-left-color:transparent} +.talk-opt-arrow{color:#555;flex-shrink:0} +.talk-opt-text{color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} +.talk-opt-goto{color:#8cf;font-weight:bold;white-space:nowrap;min-width:30px} +.talk-opt-tag{display:inline-block;padding:0 3px;font-size:9px;border-radius:2px;line-height:1.4;flex-shrink:0} +.talk-opt-tag-cond{background:rgba(100,160,255,.2);color:#6af} +.talk-opt-tag-act{background:rgba(232,196,124,.2);color:#e8c47c} +.talk-opt-del{padding:0 4px;font-size:10px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;flex-shrink:0} +.talk-add-btn{display:inline-block;margin-top:4px;padding:3px 10px;font-size:10px;background:var(--accent);color:var(--text);border:1px solid #1a5a8e;border-radius:3px;cursor:pointer;font-family:monospace} +.talk-children{margin-top:0} + +.talk-section{margin-bottom:6px} +.talk-section-header{display:flex;align-items:center;gap:6px;margin-bottom:3px} +.talk-section-header .talk-prop-label{font-size:10px;color:#aaa;text-transform:uppercase;letter-spacing:.3px} +.talk-section-remove{padding:1px 5px;font-size:9px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;font-family:monospace} +.talk-input{width:100%;padding:4px 6px;font-size:11px;font-family:monospace;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px} +.talk-input:focus{border-color:#4a7aaa;outline:none} +.talk-textarea{width:100%;padding:4px 6px;font-size:11px;font-family:monospace;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px;resize:vertical;min-height:32px} +.talk-textarea:focus{border-color:#4a7aaa;outline:none} +.talk-input-sm{padding:2px 4px;font-size:10px} +.talk-input-num{width:60px;padding:2px 4px;font-size:10px;font-family:monospace;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px} +.talk-input-num:focus{border-color:#4a7aaa;outline:none} +.talk-select{font-size:10px;font-family:monospace;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px;padding:2px 4px} +.talk-select:focus{border-color:#4a7aaa;outline:none} +.talk-check-label{font-size:10px;color:#bbb;display:inline-flex;align-items:center;gap:3px;cursor:pointer;margin-right:10px} +.talk-check-label input[type=checkbox]{width:auto;margin:0;cursor:pointer} +.talk-inline-row{display:flex;gap:4px;align-items:center;margin-bottom:3px} +.talk-inline-row .talk-input{flex:1;min-width:0} +.talk-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:3px 8px} +.talk-form-grid .talk-field-row{display:flex;flex-direction:column;gap:1px} +.talk-form-grid .talk-field-row .talk-prop-label{font-size:9px} +.talk-kv-section{margin-top:4px;padding:4px 6px;background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:4px} +.talk-kv-header{display:flex;align-items:center;gap:6px;margin-bottom:3px} +.talk-kv-header .talk-prop-label{font-size:9px;color:#aaa;text-transform:uppercase;letter-spacing:.3px} +.talk-kv-row{display:flex;gap:3px;align-items:center;margin-bottom:2px} +.talk-kv-row .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} +.talk-kv-add{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid #1a5a8e;border-radius:2px;background:var(--accent);color:var(--text);cursor:pointer;font-family:monospace} +.talk-kv-del{font-size:9px;padding:0 4px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;font-family:monospace;flex-shrink:0} +.talk-action-block{margin-top:3px;padding:6px;background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:4px} +.talk-action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:3px 8px} +.talk-shop-block{margin-top:4px;padding:6px;background:rgba(232,196,124,.04);border:1px solid rgba(232,196,124,.15);border-radius:4px} +.talk-shop-header{font-size:10px;color:#e8c47c;text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px} +.talk-shop-item{display:flex;gap:3px;align-items:center;margin-bottom:2px;padding:2px 4px;background:rgba(255,255,255,.02);border-radius:2px} +.talk-shop-item .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} +.talk-shop-item .talk-input-num{width:55px} +.talk-add-cond-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid rgba(100,160,255,.25);border-radius:2px;background:transparent;color:#6af;cursor:pointer;font-family:monospace;margin-bottom:6px} +.talk-add-act-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid rgba(232,196,124,.25);border-radius:2px;background:transparent;color:#e8c47c;cursor:pointer;font-family:monospace;margin-bottom:6px} + +.talk-cond-card{border:1px solid rgba(100,160,255,.25);border-radius:5px;margin-bottom:6px;overflow:hidden} +.talk-cond-card-header{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:rgba(100,160,255,.08);border-bottom:1px solid rgba(100,160,255,.15);font-size:10px;color:#aaa;text-transform:uppercase;letter-spacing:.3px} +.talk-cond-card-body{padding:6px 8px} +.talk-cond-card-sep{border-top:1px solid rgba(100,160,255,.12);margin:1px 0} + +.talk-cond-mode-row{display:flex;align-items:center;gap:6px;margin-bottom:4px} +.talk-cond-mode-row .talk-prop-label{font-size:9px;color:#888;text-transform:uppercase;letter-spacing:.3px} + +.talk-clause-row{display:flex;align-items:center;gap:4px;margin-bottom:2px;font-size:10px} +.talk-clause-row .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} +.talk-clause-type{color:#6af;font-size:9px;text-transform:uppercase;letter-spacing:.3px;min-width:24px;white-space:nowrap} +.talk-clause-label{color:#888;font-size:9px;white-space:nowrap} +.talk-clause-del{padding:0 4px;font-size:9px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;font-family:monospace;flex-shrink:0} + +.talk-clause-add-bar{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap} +.talk-clause-add-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid rgba(100,160,255,.2);border-radius:2px;background:transparent;color:#6af;cursor:pointer;font-family:monospace} +.talk-clause-add-btn:hover{background:rgba(100,160,255,.1)} + +.talk-goto-fallback{display:flex;align-items:center;gap:6px;margin-top:6px;padding:4px 6px;background:rgba(255,255,255,.015);border:1px dashed var(--border);border-radius:3px} +.talk-goto-fallback .talk-prop-label{font-size:9px;color:#888;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;flex-shrink:0} +.talk-goto-fallback .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} + +.talk-input-num::-webkit-inner-spin-button, +.talk-input-num::-webkit-outer-spin-button{-webkit-appearance:none;margin:0} +.talk-input-num{-moz-appearance:textfield} + +.talk-add-node-row{display:flex;gap:4px;align-items:center;margin-top:8px} +.talk-add-node-row .talk-input{flex:1;max-width:200px} +.talk-add-node-row .talk-add-btn{flex-shrink:0} +.talk-opt-edit-row{display:flex;gap:4px;align-items:center;margin:3px 0;padding:3px 6px;font-size:11px} +.talk-opt-edit-row .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} +.talk-opt-edit-row .talk-opt-arrow{flex-shrink:0} +.talk-opt-edit-actions{display:flex;gap:2px;align-items:center;flex-shrink:0} +.talk-add-opt-row{display:flex;gap:4px;align-items:center;margin-top:4px;padding:0 6px} +.talk-add-opt-row .talk-input{flex:1;min-width:0;padding:2px 4px;font-size:10px} +.talk-add-opt-row .talk-add-btn{flex-shrink:0;margin-top:0} +.talk-seq-add-row{display:flex;gap:6px;align-items:center;margin:2px 0 2px 10px} +.talk-seq-add-row .talk-input{flex:1;padding:2px 4px;font-size:10px} +.talk-seq-add-row .talk-add-btn{flex-shrink:0;margin-top:0} +.talk-seq-del{font-size:9px;padding:0 4px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;font-family:monospace;flex-shrink:0} +.talk-orphans{margin-top:12px;padding-top:8px;border-top:1px dashed var(--border)} +.talk-orphans-label{font-size:10px;color:#f39c12;text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px} +.talk-orphans-hint{font-size:9px;color:#888;margin-bottom:6px;font-style:italic} .tabs{display:flex;gap:2px;margin-bottom:12px;border-bottom:1px solid var(--border);padding-bottom:0} .tab{padding:6px 14px;font-size:12px;background:transparent;color:#aaa;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:monospace} .tab:hover{color:var(--text)} -- cgit v1.2.3