agent-discover 1.0.10 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/app.js +90 -48
- package/dist/ui/index.html +2 -2
- package/dist/ui/styles.css +82 -64
- package/package.json +1 -1
package/dist/ui/app.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
return fetch(AD._baseUrl + url, opts);
|
|
13
13
|
};
|
|
14
14
|
AD._wsUrl = null;
|
|
15
|
+
AD._root = document;
|
|
15
16
|
|
|
16
17
|
let state = { servers: [], active: [], version: '0.0.0' };
|
|
17
18
|
let ws = null;
|
|
@@ -59,7 +60,7 @@
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
function setConnectionStatus(cls, text) {
|
|
62
|
-
var el =
|
|
63
|
+
var el = AD._root.getElementById('conn-status');
|
|
63
64
|
if (!el) return;
|
|
64
65
|
el.className = 'connection-status ' + cls;
|
|
65
66
|
el.innerHTML = '<span class="conn-dot"></span>' + text;
|
|
@@ -70,7 +71,7 @@
|
|
|
70
71
|
// -------------------------------------------------------------------------
|
|
71
72
|
|
|
72
73
|
function initTabs() {
|
|
73
|
-
var navItems =
|
|
74
|
+
var navItems = AD._root.querySelectorAll('.nav-item');
|
|
74
75
|
navItems.forEach(function (item) {
|
|
75
76
|
item.addEventListener('click', function () {
|
|
76
77
|
var tab = this.dataset.tab;
|
|
@@ -81,10 +82,10 @@
|
|
|
81
82
|
});
|
|
82
83
|
this.classList.add('active');
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
AD._root.querySelectorAll('.tab-panel').forEach(function (p) {
|
|
85
86
|
p.classList.remove('active');
|
|
86
87
|
});
|
|
87
|
-
|
|
88
|
+
AD._root.getElementById('tab-' + tab).classList.add('active');
|
|
88
89
|
});
|
|
89
90
|
});
|
|
90
91
|
}
|
|
@@ -94,19 +95,25 @@
|
|
|
94
95
|
// -------------------------------------------------------------------------
|
|
95
96
|
|
|
96
97
|
function initTheme() {
|
|
97
|
-
var toggle =
|
|
98
|
+
var toggle = AD._root.getElementById('theme-toggle');
|
|
98
99
|
var saved = localStorage.getItem('agent-discover-theme');
|
|
99
|
-
if (saved === '
|
|
100
|
-
document.
|
|
101
|
-
} else if (saved === '
|
|
102
|
-
document.
|
|
100
|
+
if (saved === 'dark') {
|
|
101
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
102
|
+
} else if (saved === 'light') {
|
|
103
|
+
document.documentElement.removeAttribute('data-theme');
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
+
var currentTheme =
|
|
106
|
+
document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light';
|
|
107
|
+
updateThemeIcon(currentTheme);
|
|
105
108
|
|
|
106
109
|
toggle.addEventListener('click', function () {
|
|
107
|
-
var isDark = document.
|
|
110
|
+
var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
|
|
108
111
|
var next = isDark ? 'light' : 'dark';
|
|
109
|
-
|
|
112
|
+
if (next === 'dark') {
|
|
113
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
114
|
+
} else {
|
|
115
|
+
document.documentElement.removeAttribute('data-theme');
|
|
116
|
+
}
|
|
110
117
|
localStorage.setItem('agent-discover-theme', next);
|
|
111
118
|
updateThemeIcon(next);
|
|
112
119
|
// Reverse sync — notify agent-desk shell
|
|
@@ -115,7 +122,7 @@
|
|
|
115
122
|
}
|
|
116
123
|
|
|
117
124
|
function updateThemeIcon(theme) {
|
|
118
|
-
var toggle =
|
|
125
|
+
var toggle = AD._root.getElementById('theme-toggle');
|
|
119
126
|
if (!toggle) return;
|
|
120
127
|
var icon = toggle.querySelector('.material-symbols-outlined');
|
|
121
128
|
if (icon) icon.textContent = theme === 'dark' ? 'dark_mode' : 'light_mode';
|
|
@@ -126,7 +133,7 @@
|
|
|
126
133
|
// -------------------------------------------------------------------------
|
|
127
134
|
|
|
128
135
|
function initSearch() {
|
|
129
|
-
var input =
|
|
136
|
+
var input = AD._root.getElementById('browse-search');
|
|
130
137
|
input.addEventListener('input', function () {
|
|
131
138
|
clearTimeout(searchTimeout);
|
|
132
139
|
var q = this.value.trim();
|
|
@@ -142,7 +149,7 @@
|
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
function fetchBrowse(query) {
|
|
145
|
-
var el =
|
|
152
|
+
var el = AD._root.getElementById('browse-list');
|
|
146
153
|
el.innerHTML = '<div class="loading">Searching...</div>';
|
|
147
154
|
|
|
148
155
|
AD._fetch('/api/browse?query=' + encodeURIComponent(query) + '&limit=20')
|
|
@@ -164,14 +171,14 @@
|
|
|
164
171
|
// -------------------------------------------------------------------------
|
|
165
172
|
|
|
166
173
|
function render() {
|
|
167
|
-
|
|
168
|
-
|
|
174
|
+
AD._root.getElementById('version').textContent = 'v' + state.version;
|
|
175
|
+
AD._root.getElementById('installed-count').textContent = String(state.servers.length);
|
|
169
176
|
|
|
170
177
|
renderInstalled();
|
|
171
178
|
}
|
|
172
179
|
|
|
173
180
|
function renderInstalled() {
|
|
174
|
-
var el =
|
|
181
|
+
var el = AD._root.getElementById('installed-list');
|
|
175
182
|
if (!state.servers.length) {
|
|
176
183
|
el.innerHTML =
|
|
177
184
|
'<div class="empty-state"><span class="material-symbols-outlined empty-icon">dns</span><p>No servers registered</p><p class="hint">Use registry_install or browse the marketplace</p></div>';
|
|
@@ -395,7 +402,7 @@
|
|
|
395
402
|
if (!cached) return '<div class="loading">Loading...</div>';
|
|
396
403
|
|
|
397
404
|
if (!cached.length)
|
|
398
|
-
return '<div style="font-size:12px;color:var(--text-
|
|
405
|
+
return '<div style="font-size:12px;color:var(--text-dim)">No metrics data yet</div>';
|
|
399
406
|
|
|
400
407
|
var rows = cached
|
|
401
408
|
.map(function (m) {
|
|
@@ -472,9 +479,9 @@
|
|
|
472
479
|
}
|
|
473
480
|
|
|
474
481
|
function renderBrowse() {
|
|
475
|
-
var el =
|
|
482
|
+
var el = AD._root.getElementById('browse-list');
|
|
476
483
|
if (!browseResults.length) {
|
|
477
|
-
var q =
|
|
484
|
+
var q = AD._root.getElementById('browse-search').value.trim();
|
|
478
485
|
if (!q) {
|
|
479
486
|
el.innerHTML =
|
|
480
487
|
'<div class="empty-state"><span class="material-symbols-outlined empty-icon">explore</span><p>Search the official MCP registry</p><p class="hint">Type a query above to discover servers</p></div>';
|
|
@@ -699,7 +706,7 @@
|
|
|
699
706
|
};
|
|
700
707
|
|
|
701
708
|
window.__installFromNpm = function () {
|
|
702
|
-
var input =
|
|
709
|
+
var input = AD._root.getElementById('npm-package-input');
|
|
703
710
|
var pkg = (input ? input.value : '').trim();
|
|
704
711
|
if (!pkg) return;
|
|
705
712
|
|
|
@@ -835,8 +842,8 @@
|
|
|
835
842
|
};
|
|
836
843
|
|
|
837
844
|
window.__addSecret = function (serverId) {
|
|
838
|
-
var keyEl =
|
|
839
|
-
var valEl =
|
|
845
|
+
var keyEl = AD._root.getElementById('secret-key-' + serverId);
|
|
846
|
+
var valEl = AD._root.getElementById('secret-val-' + serverId);
|
|
840
847
|
if (!keyEl || !valEl) return;
|
|
841
848
|
var key = keyEl.value.trim();
|
|
842
849
|
var value = valEl.value;
|
|
@@ -890,10 +897,10 @@
|
|
|
890
897
|
};
|
|
891
898
|
|
|
892
899
|
window.__saveConfig = function (serverId) {
|
|
893
|
-
var desc =
|
|
894
|
-
var cmd =
|
|
895
|
-
var argsEl =
|
|
896
|
-
var envEl =
|
|
900
|
+
var desc = AD._root.getElementById('cfg-desc-' + serverId);
|
|
901
|
+
var cmd = AD._root.getElementById('cfg-cmd-' + serverId);
|
|
902
|
+
var argsEl = AD._root.getElementById('cfg-args-' + serverId);
|
|
903
|
+
var envEl = AD._root.getElementById('cfg-env-' + serverId);
|
|
897
904
|
if (!desc || !cmd || !argsEl || !envEl) return;
|
|
898
905
|
|
|
899
906
|
var args = argsEl.value
|
|
@@ -937,7 +944,7 @@
|
|
|
937
944
|
// -------------------------------------------------------------------------
|
|
938
945
|
|
|
939
946
|
function showToast(message, type) {
|
|
940
|
-
var existing =
|
|
947
|
+
var existing = AD._root.querySelector('.toast');
|
|
941
948
|
if (existing) existing.remove();
|
|
942
949
|
|
|
943
950
|
var toast = document.createElement('div');
|
|
@@ -962,30 +969,26 @@
|
|
|
962
969
|
initThemeSync();
|
|
963
970
|
}
|
|
964
971
|
|
|
965
|
-
// Auto-init for standalone
|
|
966
|
-
if (document.readyState === 'loading') {
|
|
967
|
-
document.addEventListener('DOMContentLoaded', _init);
|
|
968
|
-
} else {
|
|
969
|
-
_init();
|
|
970
|
-
}
|
|
971
|
-
|
|
972
972
|
// -------------------------------------------------------------------------
|
|
973
973
|
// Theme sync from parent (agent-desk) via executeJavaScript
|
|
974
974
|
// -------------------------------------------------------------------------
|
|
975
975
|
|
|
976
976
|
function initThemeSync() {
|
|
977
|
-
// Detect external theme injection via MutationObserver on
|
|
977
|
+
// Detect external theme injection via MutationObserver on data-theme attribute
|
|
978
978
|
var observer = new MutationObserver(function (mutations) {
|
|
979
979
|
mutations.forEach(function (m) {
|
|
980
|
-
if (m.attributeName === '
|
|
981
|
-
var isDark = document.
|
|
980
|
+
if (m.attributeName === 'data-theme') {
|
|
981
|
+
var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
|
|
982
982
|
var theme = isDark ? 'dark' : 'light';
|
|
983
983
|
localStorage.setItem('agent-discover-theme', theme);
|
|
984
984
|
updateThemeIcon(theme);
|
|
985
985
|
}
|
|
986
986
|
});
|
|
987
987
|
});
|
|
988
|
-
observer.observe(document.
|
|
988
|
+
observer.observe(document.documentElement, {
|
|
989
|
+
attributes: true,
|
|
990
|
+
attributeFilter: ['data-theme'],
|
|
991
|
+
});
|
|
989
992
|
|
|
990
993
|
// Listen for postMessage theme sync (same pattern as agent-comm)
|
|
991
994
|
window.addEventListener('message', function (event) {
|
|
@@ -1071,9 +1074,6 @@
|
|
|
1071
1074
|
'0px 1px 3px 0px rgba(0,0,0,0.3), 0px 4px 8px 3px rgba(0,0,0,0.15)',
|
|
1072
1075
|
);
|
|
1073
1076
|
}
|
|
1074
|
-
root.style.setProperty('--shadow-sm', 'var(--shadow-1)');
|
|
1075
|
-
root.style.setProperty('--shadow-md', 'var(--shadow-2)');
|
|
1076
|
-
root.style.setProperty('--shadow-hover', 'var(--shadow-3)');
|
|
1077
1077
|
}
|
|
1078
1078
|
|
|
1079
1079
|
if (colors.isDark !== undefined) {
|
|
@@ -1085,7 +1085,7 @@
|
|
|
1085
1085
|
updateThemeIcon(colors.isDark ? 'dark' : 'light');
|
|
1086
1086
|
}
|
|
1087
1087
|
|
|
1088
|
-
var themeToggle =
|
|
1088
|
+
var themeToggle = AD._root.getElementById('theme-toggle');
|
|
1089
1089
|
if (themeToggle) themeToggle.style.display = 'none';
|
|
1090
1090
|
});
|
|
1091
1091
|
}
|
|
@@ -1094,16 +1094,43 @@
|
|
|
1094
1094
|
options = options || {};
|
|
1095
1095
|
AD._baseUrl = options.baseUrl || '';
|
|
1096
1096
|
AD._wsUrl = options.wsUrl || null;
|
|
1097
|
-
|
|
1097
|
+
|
|
1098
|
+
var shadow = container.attachShadow({ mode: 'open' });
|
|
1099
|
+
|
|
1100
|
+
if (options.cssUrl) {
|
|
1098
1101
|
var link = document.createElement('link');
|
|
1099
|
-
link.id = 'ad-plugin-css';
|
|
1100
1102
|
link.rel = 'stylesheet';
|
|
1101
1103
|
link.href = options.cssUrl;
|
|
1102
|
-
|
|
1104
|
+
shadow.appendChild(link);
|
|
1103
1105
|
}
|
|
1106
|
+
|
|
1107
|
+
var fonts = document.createElement('link');
|
|
1108
|
+
fonts.rel = 'stylesheet';
|
|
1109
|
+
fonts.href =
|
|
1110
|
+
'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap';
|
|
1111
|
+
shadow.appendChild(fonts);
|
|
1112
|
+
var icons = document.createElement('link');
|
|
1113
|
+
icons.rel = 'stylesheet';
|
|
1114
|
+
icons.href =
|
|
1115
|
+
'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap';
|
|
1116
|
+
shadow.appendChild(icons);
|
|
1117
|
+
|
|
1118
|
+
var pluginStyle = document.createElement('style');
|
|
1119
|
+
pluginStyle.textContent =
|
|
1120
|
+
':host { display:block; width:100%; height:100%; overflow:hidden; }' +
|
|
1121
|
+
'.ad-wrapper { font-family:var(--font-sans); font-size:14px; color:var(--text); background:var(--bg); line-height:1.5; width:100%; height:100%; overflow:hidden; }' +
|
|
1122
|
+
'.ad-wrapper #app { height:100%; }';
|
|
1123
|
+
shadow.appendChild(pluginStyle);
|
|
1124
|
+
|
|
1104
1125
|
if (typeof AD._template === 'function') {
|
|
1105
|
-
|
|
1126
|
+
var wrapper = document.createElement('div');
|
|
1127
|
+
wrapper.setAttribute('data-theme', 'dark');
|
|
1128
|
+
wrapper.className = 'ad-wrapper';
|
|
1129
|
+
wrapper.innerHTML = AD._template();
|
|
1130
|
+
shadow.appendChild(wrapper);
|
|
1106
1131
|
}
|
|
1132
|
+
|
|
1133
|
+
AD._root = shadow;
|
|
1107
1134
|
_init();
|
|
1108
1135
|
};
|
|
1109
1136
|
|
|
@@ -1113,5 +1140,20 @@
|
|
|
1113
1140
|
ws.close();
|
|
1114
1141
|
ws = null;
|
|
1115
1142
|
}
|
|
1143
|
+
AD._root = document;
|
|
1116
1144
|
};
|
|
1145
|
+
|
|
1146
|
+
var _params = new URLSearchParams(location.search);
|
|
1147
|
+
if (_params.get('baseUrl')) AD._baseUrl = _params.get('baseUrl');
|
|
1148
|
+
if (_params.get('wsUrl')) AD._wsUrl = _params.get('wsUrl');
|
|
1149
|
+
|
|
1150
|
+
try {
|
|
1151
|
+
if (document.readyState === 'loading') {
|
|
1152
|
+
document.addEventListener('DOMContentLoaded', _init);
|
|
1153
|
+
} else {
|
|
1154
|
+
_init();
|
|
1155
|
+
}
|
|
1156
|
+
} catch (e) {
|
|
1157
|
+
// standalone init may fail in file:// context (no WS host) — plugin mode uses mount()
|
|
1158
|
+
}
|
|
1117
1159
|
})();
|
package/dist/ui/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
2
|
+
<html lang="en" data-theme="dark">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
/>
|
|
22
22
|
<link rel="stylesheet" href="styles.css" />
|
|
23
23
|
</head>
|
|
24
|
-
<body
|
|
24
|
+
<body>
|
|
25
25
|
<div class="layout">
|
|
26
26
|
<aside class="sidebar">
|
|
27
27
|
<div class="sidebar-header">
|
package/dist/ui/styles.css
CHANGED
|
@@ -6,32 +6,68 @@
|
|
|
6
6
|
:root {
|
|
7
7
|
--accent: #5d8da8;
|
|
8
8
|
--accent-hover: #4e7d96;
|
|
9
|
-
--accent-
|
|
9
|
+
--accent-dim: rgba(93, 141, 168, 0.12);
|
|
10
10
|
|
|
11
|
-
--font-
|
|
11
|
+
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
|
|
12
12
|
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
13
13
|
|
|
14
14
|
--radius-sm: 8px;
|
|
15
|
-
--radius
|
|
15
|
+
--radius: 12px;
|
|
16
16
|
--radius-lg: 16px;
|
|
17
17
|
|
|
18
|
-
--shadow-
|
|
19
|
-
--shadow-
|
|
18
|
+
--shadow-1: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
19
|
+
--shadow-2: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
20
|
+
--shadow-3: 0 4px 16px rgba(0, 0, 0, 0.16);
|
|
21
|
+
|
|
22
|
+
--focus-ring: rgba(93, 141, 168, 0.4);
|
|
23
|
+
|
|
24
|
+
/* Status colors */
|
|
25
|
+
--green: #4caf50;
|
|
26
|
+
--green-dim: rgba(76, 175, 80, 0.15);
|
|
27
|
+
--yellow: #ffb300;
|
|
28
|
+
--yellow-dim: rgba(255, 179, 0, 0.15);
|
|
29
|
+
--orange: #ff9800;
|
|
30
|
+
--orange-dim: rgba(255, 152, 0, 0.15);
|
|
31
|
+
--red: #f44336;
|
|
32
|
+
--red-dim: rgba(244, 67, 54, 0.15);
|
|
33
|
+
--purple: #ab47bc;
|
|
34
|
+
--purple-dim: rgba(171, 71, 188, 0.15);
|
|
35
|
+
--blue: #42a5f5;
|
|
36
|
+
--blue-dim: rgba(66, 165, 245, 0.15);
|
|
37
|
+
|
|
38
|
+
/* Light theme as default */
|
|
39
|
+
--bg: #f5f5f5;
|
|
40
|
+
--bg-surface: #fff;
|
|
41
|
+
--bg-elevated: #f9f9f9;
|
|
42
|
+
--bg-hover: #eee;
|
|
43
|
+
--text: #1a1a1a;
|
|
44
|
+
--text-muted: #666;
|
|
45
|
+
--text-dim: #999;
|
|
46
|
+
--border: #e0e0e0;
|
|
47
|
+
--border-light: #f0f0f0;
|
|
48
|
+
--badge-bg: rgba(93, 141, 168, 0.15);
|
|
49
|
+
--badge-text: #3d6d88;
|
|
50
|
+
--status-active: #2e7d32;
|
|
51
|
+
--status-inactive: #999;
|
|
52
|
+
--tag-bg: rgba(0, 0, 0, 0.06);
|
|
53
|
+
--tag-text: #666;
|
|
54
|
+
--scrollbar-thumb: #ccc;
|
|
20
55
|
}
|
|
21
56
|
|
|
22
57
|
/* ---------------------------------------------------------------------------
|
|
23
58
|
Theme tokens
|
|
24
59
|
--------------------------------------------------------------------------- */
|
|
25
60
|
|
|
26
|
-
|
|
61
|
+
[data-theme='dark'] {
|
|
27
62
|
--bg: #121212;
|
|
28
63
|
--bg-surface: #1e1e1e;
|
|
29
64
|
--bg-elevated: #2a2a2a;
|
|
30
65
|
--bg-hover: #333;
|
|
31
66
|
--text: #e0e0e0;
|
|
32
|
-
--text-
|
|
33
|
-
--text-
|
|
67
|
+
--text-muted: #999;
|
|
68
|
+
--text-dim: #666;
|
|
34
69
|
--border: #333;
|
|
70
|
+
--border-light: #2a2a2a;
|
|
35
71
|
--badge-bg: rgba(93, 141, 168, 0.2);
|
|
36
72
|
--badge-text: #7ab4d0;
|
|
37
73
|
--status-active: #4caf50;
|
|
@@ -41,24 +77,6 @@
|
|
|
41
77
|
--scrollbar-thumb: #444;
|
|
42
78
|
}
|
|
43
79
|
|
|
44
|
-
.theme-light {
|
|
45
|
-
--bg: #f5f5f5;
|
|
46
|
-
--bg-surface: #fff;
|
|
47
|
-
--bg-elevated: #f9f9f9;
|
|
48
|
-
--bg-hover: #eee;
|
|
49
|
-
--text: #1a1a1a;
|
|
50
|
-
--text-secondary: #666;
|
|
51
|
-
--text-tertiary: #999;
|
|
52
|
-
--border: #e0e0e0;
|
|
53
|
-
--badge-bg: rgba(93, 141, 168, 0.15);
|
|
54
|
-
--badge-text: #3d6d88;
|
|
55
|
-
--status-active: #2e7d32;
|
|
56
|
-
--status-inactive: #999;
|
|
57
|
-
--tag-bg: rgba(0, 0, 0, 0.06);
|
|
58
|
-
--tag-text: #666;
|
|
59
|
-
--scrollbar-thumb: #ccc;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
80
|
/* ---------------------------------------------------------------------------
|
|
63
81
|
Reset & base
|
|
64
82
|
--------------------------------------------------------------------------- */
|
|
@@ -72,7 +90,7 @@
|
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
body {
|
|
75
|
-
font-family: var(--font-
|
|
93
|
+
font-family: var(--font-sans);
|
|
76
94
|
background: var(--bg);
|
|
77
95
|
color: var(--text);
|
|
78
96
|
line-height: 1.5;
|
|
@@ -118,7 +136,7 @@ body {
|
|
|
118
136
|
|
|
119
137
|
.sidebar-version {
|
|
120
138
|
font-size: 12px;
|
|
121
|
-
color: var(--text-
|
|
139
|
+
color: var(--text-muted);
|
|
122
140
|
font-family: var(--font-mono);
|
|
123
141
|
}
|
|
124
142
|
|
|
@@ -137,8 +155,8 @@ body {
|
|
|
137
155
|
padding: 10px 12px;
|
|
138
156
|
border: none;
|
|
139
157
|
background: transparent;
|
|
140
|
-
color: var(--text-
|
|
141
|
-
font-family: var(--font-
|
|
158
|
+
color: var(--text-muted);
|
|
159
|
+
font-family: var(--font-sans);
|
|
142
160
|
font-size: 14px;
|
|
143
161
|
font-weight: 500;
|
|
144
162
|
border-radius: var(--radius-sm);
|
|
@@ -152,7 +170,7 @@ body {
|
|
|
152
170
|
}
|
|
153
171
|
|
|
154
172
|
.nav-item.active {
|
|
155
|
-
background: var(--accent-
|
|
173
|
+
background: var(--accent-dim);
|
|
156
174
|
color: var(--accent);
|
|
157
175
|
}
|
|
158
176
|
|
|
@@ -182,7 +200,7 @@ body {
|
|
|
182
200
|
.connection-status {
|
|
183
201
|
font-size: 11px;
|
|
184
202
|
font-family: var(--font-mono);
|
|
185
|
-
color: var(--text-
|
|
203
|
+
color: var(--text-muted);
|
|
186
204
|
display: flex;
|
|
187
205
|
align-items: center;
|
|
188
206
|
gap: 6px;
|
|
@@ -192,7 +210,7 @@ body {
|
|
|
192
210
|
width: 6px;
|
|
193
211
|
height: 6px;
|
|
194
212
|
border-radius: 50%;
|
|
195
|
-
background: var(--text-
|
|
213
|
+
background: var(--text-muted);
|
|
196
214
|
}
|
|
197
215
|
|
|
198
216
|
.connection-status.connected {
|
|
@@ -219,7 +237,7 @@ body {
|
|
|
219
237
|
height: 36px;
|
|
220
238
|
border: none;
|
|
221
239
|
background: var(--bg-hover);
|
|
222
|
-
color: var(--text-
|
|
240
|
+
color: var(--text-muted);
|
|
223
241
|
border-radius: var(--radius-sm);
|
|
224
242
|
cursor: pointer;
|
|
225
243
|
transition: all 0.15s;
|
|
@@ -269,7 +287,7 @@ body {
|
|
|
269
287
|
font-weight: 600;
|
|
270
288
|
text-transform: uppercase;
|
|
271
289
|
letter-spacing: 0.5px;
|
|
272
|
-
color: var(--text-
|
|
290
|
+
color: var(--text-muted);
|
|
273
291
|
}
|
|
274
292
|
|
|
275
293
|
/* ---------------------------------------------------------------------------
|
|
@@ -290,7 +308,7 @@ body {
|
|
|
290
308
|
|
|
291
309
|
.search-bar .material-symbols-outlined {
|
|
292
310
|
font-size: 20px;
|
|
293
|
-
color: var(--text-
|
|
311
|
+
color: var(--text-dim);
|
|
294
312
|
}
|
|
295
313
|
|
|
296
314
|
.search-bar input {
|
|
@@ -299,12 +317,12 @@ body {
|
|
|
299
317
|
border: none;
|
|
300
318
|
outline: none;
|
|
301
319
|
color: var(--text);
|
|
302
|
-
font-family: var(--font-
|
|
320
|
+
font-family: var(--font-sans);
|
|
303
321
|
font-size: 14px;
|
|
304
322
|
}
|
|
305
323
|
|
|
306
324
|
.search-bar input::placeholder {
|
|
307
|
-
color: var(--text-
|
|
325
|
+
color: var(--text-dim);
|
|
308
326
|
}
|
|
309
327
|
|
|
310
328
|
/* ---------------------------------------------------------------------------
|
|
@@ -320,7 +338,7 @@ body {
|
|
|
320
338
|
.server-card {
|
|
321
339
|
background: var(--bg-surface);
|
|
322
340
|
border: 1px solid var(--border);
|
|
323
|
-
border-radius: var(--radius
|
|
341
|
+
border-radius: var(--radius);
|
|
324
342
|
padding: 16px;
|
|
325
343
|
transition: border-color 0.15s;
|
|
326
344
|
}
|
|
@@ -370,7 +388,7 @@ body {
|
|
|
370
388
|
|
|
371
389
|
.server-description {
|
|
372
390
|
font-size: 13px;
|
|
373
|
-
color: var(--text-
|
|
391
|
+
color: var(--text-muted);
|
|
374
392
|
margin-bottom: 10px;
|
|
375
393
|
line-height: 1.4;
|
|
376
394
|
}
|
|
@@ -396,7 +414,7 @@ body {
|
|
|
396
414
|
align-items: center;
|
|
397
415
|
gap: 12px;
|
|
398
416
|
font-size: 12px;
|
|
399
|
-
color: var(--text-
|
|
417
|
+
color: var(--text-dim);
|
|
400
418
|
}
|
|
401
419
|
|
|
402
420
|
.server-meta .material-symbols-outlined {
|
|
@@ -414,7 +432,7 @@ body {
|
|
|
414
432
|
font-weight: 600;
|
|
415
433
|
text-transform: uppercase;
|
|
416
434
|
letter-spacing: 0.5px;
|
|
417
|
-
color: var(--text-
|
|
435
|
+
color: var(--text-dim);
|
|
418
436
|
margin-bottom: 6px;
|
|
419
437
|
}
|
|
420
438
|
|
|
@@ -444,7 +462,7 @@ body {
|
|
|
444
462
|
|
|
445
463
|
.tool-desc {
|
|
446
464
|
font-size: 12px;
|
|
447
|
-
color: var(--text-
|
|
465
|
+
color: var(--text-muted);
|
|
448
466
|
line-height: 1.5;
|
|
449
467
|
padding: 6px 0;
|
|
450
468
|
border-bottom: 1px solid var(--border);
|
|
@@ -464,7 +482,7 @@ body {
|
|
|
464
482
|
align-items: center;
|
|
465
483
|
justify-content: center;
|
|
466
484
|
padding: 60px 20px;
|
|
467
|
-
color: var(--text-
|
|
485
|
+
color: var(--text-dim);
|
|
468
486
|
grid-column: 1 / -1;
|
|
469
487
|
}
|
|
470
488
|
|
|
@@ -532,7 +550,7 @@ body {
|
|
|
532
550
|
padding: 6px 14px;
|
|
533
551
|
border: none;
|
|
534
552
|
border-radius: var(--radius-sm);
|
|
535
|
-
font-family: var(--font-
|
|
553
|
+
font-family: var(--font-sans);
|
|
536
554
|
font-size: 12px;
|
|
537
555
|
font-weight: 500;
|
|
538
556
|
cursor: pointer;
|
|
@@ -570,7 +588,7 @@ body {
|
|
|
570
588
|
align-items: center;
|
|
571
589
|
justify-content: center;
|
|
572
590
|
padding: 40px;
|
|
573
|
-
color: var(--text-
|
|
591
|
+
color: var(--text-dim);
|
|
574
592
|
font-size: 14px;
|
|
575
593
|
grid-column: 1 / -1;
|
|
576
594
|
}
|
|
@@ -587,7 +605,7 @@ body {
|
|
|
587
605
|
border-radius: 6px;
|
|
588
606
|
cursor: pointer;
|
|
589
607
|
font-size: 12px;
|
|
590
|
-
font-family: var(--font-
|
|
608
|
+
font-family: var(--font-sans);
|
|
591
609
|
font-weight: 500;
|
|
592
610
|
display: flex;
|
|
593
611
|
align-items: center;
|
|
@@ -612,13 +630,13 @@ body {
|
|
|
612
630
|
}
|
|
613
631
|
|
|
614
632
|
.btn-installed {
|
|
615
|
-
color: var(--text-
|
|
633
|
+
color: var(--text-muted);
|
|
616
634
|
border-color: var(--border);
|
|
617
635
|
}
|
|
618
636
|
|
|
619
637
|
.btn-installed:hover {
|
|
620
638
|
background: transparent;
|
|
621
|
-
color: var(--text-
|
|
639
|
+
color: var(--text-muted);
|
|
622
640
|
}
|
|
623
641
|
|
|
624
642
|
/* ---------------------------------------------------------------------------
|
|
@@ -641,7 +659,7 @@ body {
|
|
|
641
659
|
border-radius: 6px;
|
|
642
660
|
cursor: pointer;
|
|
643
661
|
font-size: 12px;
|
|
644
|
-
font-family: var(--font-
|
|
662
|
+
font-family: var(--font-sans);
|
|
645
663
|
font-weight: 500;
|
|
646
664
|
display: flex;
|
|
647
665
|
align-items: center;
|
|
@@ -662,7 +680,7 @@ body {
|
|
|
662
680
|
border-radius: 6px;
|
|
663
681
|
cursor: pointer;
|
|
664
682
|
font-size: 12px;
|
|
665
|
-
font-family: var(--font-
|
|
683
|
+
font-family: var(--font-sans);
|
|
666
684
|
font-weight: 500;
|
|
667
685
|
display: flex;
|
|
668
686
|
align-items: center;
|
|
@@ -677,13 +695,13 @@ body {
|
|
|
677
695
|
|
|
678
696
|
.btn-delete {
|
|
679
697
|
border: 1px solid var(--border);
|
|
680
|
-
color: var(--text-
|
|
698
|
+
color: var(--text-dim);
|
|
681
699
|
background: transparent;
|
|
682
700
|
padding: 4px 12px;
|
|
683
701
|
border-radius: 6px;
|
|
684
702
|
cursor: pointer;
|
|
685
703
|
font-size: 12px;
|
|
686
|
-
font-family: var(--font-
|
|
704
|
+
font-family: var(--font-sans);
|
|
687
705
|
font-weight: 500;
|
|
688
706
|
display: flex;
|
|
689
707
|
align-items: center;
|
|
@@ -736,13 +754,13 @@ body {
|
|
|
736
754
|
|
|
737
755
|
.btn-health {
|
|
738
756
|
border: 1px solid var(--border);
|
|
739
|
-
color: var(--text-
|
|
757
|
+
color: var(--text-dim);
|
|
740
758
|
background: transparent;
|
|
741
759
|
padding: 4px 8px;
|
|
742
760
|
border-radius: 6px;
|
|
743
761
|
cursor: pointer;
|
|
744
762
|
font-size: 12px;
|
|
745
|
-
font-family: var(--font-
|
|
763
|
+
font-family: var(--font-sans);
|
|
746
764
|
font-weight: 500;
|
|
747
765
|
display: flex;
|
|
748
766
|
align-items: center;
|
|
@@ -771,14 +789,14 @@ body {
|
|
|
771
789
|
font-weight: 600;
|
|
772
790
|
text-transform: uppercase;
|
|
773
791
|
letter-spacing: 0.5px;
|
|
774
|
-
color: var(--text-
|
|
792
|
+
color: var(--text-muted);
|
|
775
793
|
display: flex;
|
|
776
794
|
align-items: center;
|
|
777
795
|
gap: 4px;
|
|
778
796
|
background: none;
|
|
779
797
|
border: none;
|
|
780
798
|
padding: 0;
|
|
781
|
-
font-family: var(--font-
|
|
799
|
+
font-family: var(--font-sans);
|
|
782
800
|
}
|
|
783
801
|
|
|
784
802
|
.section-toggle .material-symbols-outlined {
|
|
@@ -817,14 +835,14 @@ body {
|
|
|
817
835
|
}
|
|
818
836
|
|
|
819
837
|
.secret-value {
|
|
820
|
-
color: var(--text-
|
|
838
|
+
color: var(--text-muted);
|
|
821
839
|
font-family: var(--font-mono);
|
|
822
840
|
}
|
|
823
841
|
|
|
824
842
|
.secret-delete {
|
|
825
843
|
background: none;
|
|
826
844
|
border: none;
|
|
827
|
-
color: var(--text-
|
|
845
|
+
color: var(--text-dim);
|
|
828
846
|
cursor: pointer;
|
|
829
847
|
padding: 2px;
|
|
830
848
|
display: flex;
|
|
@@ -860,7 +878,7 @@ body {
|
|
|
860
878
|
padding: 4px 10px;
|
|
861
879
|
font-size: 12px;
|
|
862
880
|
cursor: pointer;
|
|
863
|
-
font-family: var(--font-
|
|
881
|
+
font-family: var(--font-sans);
|
|
864
882
|
}
|
|
865
883
|
|
|
866
884
|
/* ---------------------------------------------------------------------------
|
|
@@ -875,7 +893,7 @@ body {
|
|
|
875
893
|
|
|
876
894
|
.metrics-table th {
|
|
877
895
|
text-align: left;
|
|
878
|
-
color: var(--text-
|
|
896
|
+
color: var(--text-muted);
|
|
879
897
|
font-weight: 500;
|
|
880
898
|
padding: 4px 8px;
|
|
881
899
|
border-bottom: 1px solid var(--border);
|
|
@@ -905,7 +923,7 @@ body {
|
|
|
905
923
|
.config-field label {
|
|
906
924
|
font-size: 11px;
|
|
907
925
|
font-weight: 500;
|
|
908
|
-
color: var(--text-
|
|
926
|
+
color: var(--text-muted);
|
|
909
927
|
text-transform: uppercase;
|
|
910
928
|
letter-spacing: 0.3px;
|
|
911
929
|
}
|
|
@@ -935,7 +953,7 @@ body {
|
|
|
935
953
|
padding: 6px 14px;
|
|
936
954
|
font-size: 12px;
|
|
937
955
|
cursor: pointer;
|
|
938
|
-
font-family: var(--font-
|
|
956
|
+
font-family: var(--font-sans);
|
|
939
957
|
font-weight: 500;
|
|
940
958
|
}
|
|
941
959
|
|
|
@@ -957,7 +975,7 @@ body {
|
|
|
957
975
|
padding: 10px 16px;
|
|
958
976
|
font-size: 13px;
|
|
959
977
|
color: var(--text);
|
|
960
|
-
box-shadow: var(--shadow-
|
|
978
|
+
box-shadow: var(--shadow-2);
|
|
961
979
|
z-index: 1000;
|
|
962
980
|
animation: toast-in 0.2s ease-out;
|
|
963
981
|
}
|
package/package.json
CHANGED