Fix API panel, thinner sidebar scrollbar

This commit is contained in:
KarnerF committed 2026-08-11 21:29:24 +02:00
1 parent 75dbf71bbc
commit b953270c3f
1 file changed
+8 -6
+8 -6
View File
@@ -848,7 +848,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
"font-size='14' font-weight='bold' fill='%%2310b981'>SM</text>"
"</svg>\">"
"<style>"
":root{--bg:#07090f;--surface:#0d111a;--surface2:#131927;--surface3:#1a2135;""--border:#1e2a42;--text:#e2e8f0;--dim:#64748b;--muted:#334155;""--accent:#10b981;--accent-dim:rgba(16,185,129,.12);""--accent-glow:rgba(16,185,129,.25);""--green:#34d399;--orange:#f59e0b;--red:#f87171;""--mono:ui-monospace,'Cascadia Code',Menlo,Consolas,monospace;""--sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;}""*{box-sizing:border-box;}""html{height:100%%;}""body{margin:0;width:100%%;height:100%%;overflow:hidden;background:var(--bg);""background-image:""radial-gradient(ellipse at 20%% 0%%,rgba(16,185,129,.07) 0%%,transparent 50%%),""radial-gradient(ellipse at 80%% 100%%,rgba(96,165,250,.04) 0%%,transparent 50%%);""color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.6;""display:flex;justify-content:center;}""@media(min-width:1280px){body{font-size:20px;}}"".card{width:100%%;max-width:1600px;display:flex;flex-direction:column;height:100%%;padding:12px 0 0 16px;}"".g2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;}"".g2.top{align-items:start;}""@media(max-width:720px){.g2{grid-template-columns:1fr;}}"".badge{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);""font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;}"".badge-dot{width:7px;height:7px;border-radius:50%%;background:var(--accent);""box-shadow:0 0 6px var(--accent),0 0 14px var(--accent-glow);""animation:pulse 2.5s ease-in-out infinite;}""@keyframes pulse{0%%,100%%{opacity:1;box-shadow:0 0 6px var(--accent),0 0 14px var(--accent-glow);}""50%%{opacity:.5;box-shadow:0 0 3px var(--accent);}}"".topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px;}""h1{font-size:1.8rem;font-weight:800;margin:0;letter-spacing:-.02em;""background:linear-gradient(135deg,#e2e8f0 0%%,#94a3b8 100%%);""-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}"".sub{color:var(--dim);font-size:1rem;margin:0;}"".lang{display:flex;gap:4px;margin-top:6px;}"".lang a{font-family:var(--mono);font-size:.8rem;padding:5px 13px;""border-radius:6px;border:1px solid var(--border);color:var(--dim);text-decoration:none;""transition:all .15s;cursor:pointer;}"".lang a:hover{border-color:var(--accent);color:var(--accent);}"".lang a.active{border-color:var(--accent);color:var(--accent);""background:var(--accent-dim);font-weight:700;}"".statusbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:32px;}"".chip{display:flex;align-items:center;gap:8px;font-family:var(--mono);""font-size:.78rem;color:var(--dim);background:var(--surface);""border:1px solid var(--border);border-radius:8px;padding:7px 14px;}"".chip b{color:var(--text);}"".chip-live{width:7px;height:7px;border-radius:50%%;background:var(--green);""box-shadow:0 0 6px var(--green);animation:pulse 2s infinite;}"".chip-dead{width:7px;height:7px;border-radius:50%%;background:var(--red);opacity:.7;}"".section{background:var(--surface);border:1px solid var(--border);""border-radius:12px;padding:18px 22px;margin-bottom:12px;""box-shadow:0 2px 12px rgba(0,0,0,.3);}"".g2 .section,.g2.top .section,.g2.top details.section{margin-bottom:0;}"".section h2,.section>summary{font-size:.95rem;text-transform:uppercase;""letter-spacing:.06em;color:var(--text);margin:0 0 16px;font-family:var(--mono);""font-weight:700;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}"".section>summary{margin-bottom:0;}"".section>summary::-webkit-details-marker{display:none;}""details.section{margin-bottom:16px;}""details.section[open]>summary{margin-bottom:20px;}""details.section[open]>summary .arr{transform:rotate(90deg);}"".arr{display:inline-block;transition:transform .2s;}"".row{display:flex;align-items:center;justify-content:space-between;""padding:9px 0;border-bottom:1px solid var(--border);gap:16px;}"".row:last-child{border-bottom:none;}"".row>label:first-child{flex:1;font-size:.85rem;font-weight:500;color:var(--text);}""input[type=checkbox]{display:none;}"".switch{width:58px;height:30px;border-radius:15px;background:var(--surface3);""border:1px solid var(--border);position:relative;cursor:pointer;""flex-shrink:0;transition:background .2s,border-color .2s;}"".switch::after{content:'';position:absolute;top:5px;left:5px;width:18px;height:18px;""border-radius:50%%;background:var(--dim);transition:transform .2s,background .2s,box-shadow .2s;}""input[type=checkbox]:checked+.switch{background:var(--accent-dim);border-color:var(--accent);}""input[type=checkbox]:checked+.switch::after{transform:translateX(28px);""background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}"".numfield{display:flex;align-items:center;justify-content:space-between;""padding:9px 0;border-bottom:1px solid var(--border);font-size:.85rem;gap:16px;}"".numfield:last-child{border-bottom:none;}"".numfield label{flex:1;font-weight:500;color:var(--text);}""input[type=numbeLine truncated
":root{--bg:#07090f;--surface:#0d111a;--surface2:#131927;--surface3:#1a2135;""--border:#1e2a42;--text:#e2e8f0;--dim:#64748b;--muted:#334155;""--accent:#10b981;--accent-dim:rgba(16,185,129,.12);""--accent-glow:rgba(16,185,129,.25);""--green:#34d399;--orange:#f59e0b;--red:#f87171;""--mono:ui-monospace,'Cascadia Code',Menlo,Consolas,monospace;""--sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;}""*{box-sizing:border-box;}""html{height:100%%;}""body{margin:0;width:100%%;height:100%%;overflow:hidden;background:var(--bg);""background-image:""radial-gradient(ellipse at 20%% 0%%,rgba(16,185,129,.07) 0%%,transparent 50%%),""radial-gradient(ellipse at 80%% 100%%,rgba(96,165,250,.04) 0%%,transparent 50%%);""color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.6;""display:flex;justify-content:center;}""@media(min-width:1280px){body{font-size:20px;}}"".card{width:100%%;max-width:1600px;display:flex;flex-direction:column;height:100%%;padding:12px 0 0 16px;}"".g2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;}"".g2.top{align-items:start;}""@media(max-width:720px){.g2{grid-template-columns:1fr;}}"".badge{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);""font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;}"".badge-dot{width:7px;height:7px;border-radius:50%%;background:var(--accent);""box-shadow:0 0 6px var(--accent),0 0 14px var(--accent-glow);""animation:pulse 2.5s ease-in-out infinite;}""@keyframes pulse{0%%,100%%{opacity:1;box-shadow:0 0 6px var(--accent),0 0 14px var(--accent-glow);}""50%%{opacity:.5;box-shadow:0 0 3px var(--accent);}}"".topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px;}""h1{font-size:1.8rem;font-weight:800;margin:0;letter-spacing:-.02em;""background:linear-gradient(135deg,#e2e8f0 0%%,#94a3b8 100%%);""-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}"".sub{color:var(--dim);font-size:1rem;margin:0;}"".lang{display:flex;gap:4px;margin-top:6px;}"".lang a{font-family:var(--mono);font-size:.8rem;padding:5px 13px;""border-radius:6px;border:1px solid var(--border);color:var(--dim);text-decoration:none;""transition:all .15s;cursor:pointer;}"".lang a:hover{border-color:var(--accent);color:var(--accent);}"".lang a.active{border-color:var(--accent);color:var(--accent);""background:var(--accent-dim);font-weight:700;}"".statusbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:32px;}"".chip{display:flex;align-items:center;gap:8px;font-family:var(--mono);""font-size:.78rem;color:var(--dim);background:var(--surface);""border:1px solid var(--border);border-radius:8px;padding:7px 14px;}"".chip b{color:var(--text);}"".chip-live{width:7px;height:7px;border-radius:50%%;background:var(--green);""box-shadow:0 0 6px var(--green);animation:pulse 2s infinite;}"".chip-dead{width:7px;height:7px;border-radius:50%%;background:var(--red);opacity:.7;}"".section{background:var(--surface);border:1px solid var(--border);""border-radius:12px;padding:18px 22px;margin-bottom:12px;""box-shadow:0 2px 12px rgba(0,0,0,.3);}"".g2 .section,.g2.top .section,.g2.top details.section{margin-bottom:0;}"".section h2,.section>summary{font-size:.95rem;text-transform:uppercase;""letter-spacing:.06em;color:var(--text);margin:0 0 16px;font-family:var(--mono);""font-weight:700;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}"".section>summary{margin-bottom:0;}"".section>summary::-webkit-details-marker{display:none;}""details.section{margin-bottom:16px;}""details.section[open]>summary{margin-bottom:20px;}""details.section[open]>summary .arr{transform:rotate(90deg);}"".arr{display:inline-block;transition:transform .2s;}"".row{display:flex;align-items:center;justify-content:space-between;""padding:9px 0;border-bottom:1px solid var(--border);gap:16px;}"".row:last-child{border-bottom:none;}"".row>label:first-child{flex:1;font-size:.85rem;font-weight:500;color:var(--text);}""input[type=checkbox]{display:none;}"".switch{width:58px;height:30px;border-radius:15px;background:var(--surface3);""border:1px solid var(--border);position:relative;cursor:pointer;""flex-shrink:0;transition:background .2s,border-color .2s;}"".switch::after{content:'';position:absolute;top:5px;left:5px;width:18px;height:18px;""border-radius:50%%;background:var(--dim);transition:transform .2s,background .2s,box-shadow .2s;}""input[type=checkbox]:checked+.switch{background:var(--accent-dim);border-color:var(--accent);}""input[type=checkbox]:checked+.switch::after{transform:translateX(28px);""background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}"".numfield{display:flex;align-items:center;justify-content:space-between;""padding:9px 0;border-bottom:1px solid var(--border);font-size:.85rem;gap:16px;}"".numfield:last-child{border-bottom:none;}"".numfield label{flex:1;font-weight:500;color:var(--text);}""input[type=numbeLine truncated
"@media(max-width:720px){.log-out{white-space:pre-wrap;overflow-x:hidden;}}"
".bak-row{display:flex;gap:4px;align-items:center;padding:5px 0;border-bottom:1px solid var(--border);min-width:0;}"
".bak-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:.78rem;}"
@@ -1197,23 +1197,25 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
/* Panel: API */
H("<div id='panel-api' class='panel'><div id='api-wrap' style='opacity:%s;pointer-events:%s'><div class='section'>",
has_api?"1":"0.35",has_api?"auto":"none");
H("<div class='sublist-title'>API</div>");
if(!has_api)
H("<p style='margin:0 0 14px;'><span id='api-badge' class='vbadge'>ab 1.7alpha3</span></p>");
else
H("<span id='api-badge' class='vbadge' style='display:none;'>ab 1.7alpha3</span>");
H("<div class='sublist-title'>API</div>");
H("<div class='numfield'><label>%s</label>"
H("<div class='numfield'><label>%s <span class='vbadge' style='%s'>ab 1.7alpha3</span></label>"
"<select name='api_bind_address'>"
"<option value='127.0.0.1'%s>127.0.0.1 &mdash; %s</option>"
"<option value='0.0.0.0'%s>0.0.0.0 &mdash; %s</option>"
"</select></div>",
L(LS_BIND_ADDR),
L(LS_BIND_ADDR),has_api?"display:none;":"",
strcmp(cfg.api_bind_address,"127.0.0.1")==0?" selected":"",
L(LS_LOCAL_ONLY),
strcmp(cfg.api_bind_address,"0.0.0.0")==0?" selected":"",
L(LS_ALL_IFACES));
NF("api_port",L(LS_PORT),"1","65535",cfg.api_port);
H("</div></div></div>"); /* close api-wrap + section + panel-api */
H("<div class='numfield'><label>%s <span class='vbadge' style='%s'>ab 1.7alpha3</span></label>"
"<input type='number' name='api_port' min='1' max='65535' value='%d'></div>",
L(LS_PORT),has_api?"display:none;":"",cfg.api_port);
H("</div></div></div>"); /* close section + api-wrap + panel-api */
/* Panel: Config/Backup */
{ const char *bdir=BAK_DIR;