From fee376102192dc6f24297a7b11324636ace3a07d Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 30 Jun 2026 19:27:37 -0400 Subject: feat: admin gui object CRUD is much nicer --- internal/admin/static/admin.css | 68 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) (limited to 'internal/admin/static/admin.css') diff --git a/internal/admin/static/admin.css b/internal/admin/static/admin.css index 6a83664..6da338e 100644 --- a/internal/admin/static/admin.css +++ b/internal/admin/static/admin.css @@ -11,7 +11,7 @@ body{font-family:monospace;background:var(--bg);color:var(--text);min-height:100 .nav .undo-bar span{color:#888;flex:1;text-align:right;margin-right:8px} .layout{display:flex;height:calc(100vh - 38px)} .main{flex:1;overflow:auto;position:relative;user-select:none;-webkit-user-select:none} -.panel{width:800px;background:var(--panel);border-left:1px solid var(--border);overflow-y:auto;padding:16px;flex-shrink:0;position:relative} +.panel{width:300px;background:var(--panel);border-left:1px solid var(--border);overflow-y:auto;padding:16px;flex-shrink:0;position:relative} .panel-resize-handle{position:absolute;left:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5;background:transparent} .panel-resize-handle:hover{background:rgba(255,255,255,.06)} .panel h2{font-size:15px;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--border)} @@ -76,6 +76,14 @@ body{font-family:monospace;background:var(--bg);color:var(--text);min-height:100 .editor-list .item:hover{background:rgba(15,52,96,.3)} .editor-list .item.active{background:var(--accent)} .editor-list h3{font-size:13px;margin-bottom:8px;color:#aaa} +.dir-group{margin-bottom:0} +.dir-header{display:flex;align-items:center;gap:4px;padding:4px 8px;font-size:11px;cursor:pointer;border-radius:3px;color:#888;margin-bottom:1px} +.dir-header:hover{background:rgba(255,255,255,.04)} +.dir-arrow{font-size:8px;width:10px;flex-shrink:0;color:#666;text-align:center} +.dir-name{flex:1;text-transform:capitalize} +.dir-count{font-size:9px;color:#555} +.dir-items{padding-left:10px} +.dir-items .item{font-size:11px} .editor-main pre{background:var(--input-bg);padding:12px;border-radius:4px;font-size:12px;overflow-x:auto;border:1px solid var(--border)} .form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 10px} .form-grid .form-group{margin-bottom:4px} @@ -144,3 +152,61 @@ g.ud-hover:hover text{font-weight:bold} .panel-tab-content .section-add-btn:hover{background:var(--hover)} .panel-tab-content .mini-label{font-size:9px;color:#888;display:block;margin-bottom:1px;margin-top:3px} .panel-tab-content .mini-input{width:60px!important;display:inline-block;margin-right:4px} +.obj-card{background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:5px;margin-bottom:10px;overflow:hidden;flex:1 1 calc(50% - 5px);min-width:340px;max-width:calc(50% - 5px)} +.obj-fields-wrap{display:flex;flex-wrap:wrap;gap:10px} +.obj-card-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:rgba(15,52,96,.3);cursor:pointer;user-select:none;font-size:13px;font-weight:bold} +.obj-card-header:hover{background:rgba(15,52,96,.5)} +.obj-card-arrow{font-size:10px;width:14px;color:#888} +.obj-card-label{flex:1;color:var(--text)} +.obj-card-remove{padding:2px 6px;font-size:10px;min-width:auto} +.obj-card-body{padding:10px 12px} +.obj-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px 8px} +.obj-field{display:flex;flex-direction:column;gap:2px;font-size:11px} +.obj-field span{color:#888;font-size:9px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.obj-field input,.obj-field textarea,.obj-field select{padding:4px 6px;font-size:11px;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px;font-family:monospace;width:100%} +.obj-field textarea{resize:vertical;min-height:28px} +.obj-field.obj-wide{grid-column:1/-1} +.obj-field.obj-check{flex-direction:row;align-items:flex-end;gap:4px;padding-bottom:3px} +.obj-field.obj-check input{width:auto} +.obj-field.obj-check span{font-size:11px;color:var(--text)} +.obj-color-row{display:flex;align-items:center;gap:4px} +.obj-color-row .color-swatch{flex-shrink:0} +.obj-color-row input{width:38px!important;text-align:center;padding:4px 2px} +.obj-field.obj-narrow{flex:0 0 auto!important;min-width:auto} +.obj-field.obj-narrow input{width:44px} +.obj-field.obj-grow{flex:1 1 0} +.obj-inline-group{border:1px solid var(--border);border-radius:4px;padding:8px;margin-top:8px} +.obj-inline-label{font-size:10px;color:#888;text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:4px} +.obj-subtable{margin-top:10px;border:1px solid var(--border);border-radius:4px;overflow:hidden} +.obj-subtable-header{font-size:10px;color:#888;text-transform:uppercase;letter-spacing:.5px;padding:6px 10px;background:rgba(255,255,255,.03);border-bottom:1px solid var(--border)} +.obj-sub-row{display:flex;gap:6px;align-items:flex-end;padding:6px 10px;border-bottom:1px solid rgba(255,255,255,.03)} +.obj-sub-row:last-child{border-bottom:none} +.obj-sub-row .obj-card-grid{flex:1;display:flex;gap:6px;flex-wrap:wrap} +.obj-sub-row .obj-card-grid .obj-field{margin-bottom:0} +.obj-sub-remove{align-self:flex-end;padding:2px 6px;font-size:10px;min-width:auto;background:var(--danger);color:#fff;border:none;border-radius:3px;cursor:pointer;margin-bottom:3px} +.obj-sub-add{display:block;width:100%;margin-top:4px;padding:4px 8px;font-size:11px;background:var(--accent);color:var(--text);border:1px solid #1a5a8e;border-radius:3px;cursor:pointer;font-family:monospace} +.obj-sub-add:hover{background:var(--hover)} +.add-section-bar{display:flex;gap:6px;align-items:center;margin-top:12px;padding:8px 0;border-top:1px solid var(--border);max-width:calc(50% - 5px)} +.add-section-bar select{padding:4px 8px;font-size:11px;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:3px;font-family:monospace;flex:1} +.add-section-bar button{padding:4px 12px;font-size:11px} +.obj-kv-list{margin-top:4px} +.obj-kv-row{display:flex;gap:4px;align-items:center;margin-bottom:3px} +.obj-kv-row input{padding:3px 5px;font-size:10px;background:var(--input-bg);color:var(--text);border:1px solid var(--input-border);border-radius:2px;font-family:monospace;flex:1} +.obj-kv-row .obj-kv-key{flex:1} +.obj-kv-row .obj-kv-val{width:70px;flex:none} +.obj-core-row{display:flex;gap:6px;align-items:flex-end;margin-bottom:8px} +.obj-field-error input,.obj-field-error textarea,.obj-field-error select{border-color:var(--danger)!important;background:rgba(192,57,43,.08)} +.obj-search{position:relative!important} +.obj-search .search-results{position:absolute;top:100%;left:0;right:0;max-height:160px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:3px;z-index:50;box-shadow:0 4px 12px rgba(0,0,0,.4);margin-top:2px} +.obj-search .search-results .sr-item{padding:4px 8px;font-size:11px;cursor:pointer;color:var(--text);border-bottom:1px solid rgba(255,255,255,.03)} +.obj-search .search-results .sr-item:hover{background:var(--accent)} +.obj-search input.search-input{padding-right:24px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center} +.obj-search input.search-input::placeholder{color:#666} +.obj-narrow.obj-search input{width:80px} +.obj-sub-row .obj-search input.search-input{min-width:80px} +.obj-sub-row .obj-search{flex:0 0 auto;min-width:0} +.obj-sub-row .obj-search.obj-grow{flex:1 1 0} +.obj-sub-row-line{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap} +.obj-sub-row-line+.obj-sub-row-line{margin-top:4px} +.obj-inline-compact .obj-card-grid{grid-template-columns:repeat(auto-fill,minmax(60px,1fr))!important} +.obj-inline-compact .obj-narrow input{width:50px} -- cgit v1.2.3