aboutsummaryrefslogtreecommitdiffstats
path: root/renderer/src/styles
diff options
context:
space:
mode:
authorClawd <ai@clawd.bot>2026-03-01 08:45:09 -0800
committerClawd <ai@clawd.bot>2026-03-01 08:45:09 -0800
commit12099b4f8cd10002810438bd309e208169960107 (patch)
treeb00e2043b6f66c1569c43c9ae9cad346f8dbdd42 /renderer/src/styles
parentd44d0f61e4026da35c0d1a4acb87ba71ed6cd599 (diff)
feat(settings): add MCP server configuration
- Add McpSettings component with add/edit/delete server UI - Support stdio (command + args + env) and sse/http (url + headers) transports - Array builder for args, key-value builder for env vars and headers - Pass mcpServers config to SDK query() calls - Store config as JSON in settings table
Diffstat (limited to 'renderer/src/styles')
-rw-r--r--renderer/src/styles/globals.css212
1 files changed, 212 insertions, 0 deletions
diff --git a/renderer/src/styles/globals.css b/renderer/src/styles/globals.css
index 0db62c2..6cf3dc7 100644
--- a/renderer/src/styles/globals.css
+++ b/renderer/src/styles/globals.css
@@ -1136,3 +1136,215 @@ html[data-theme="light"] .settings-textarea:focus {
1136.cm-scroller::-webkit-scrollbar-thumb:hover { 1136.cm-scroller::-webkit-scrollbar-thumb:hover {
1137 background: var(--border); 1137 background: var(--border);
1138} 1138}
1139
1140/* ── MCP Settings ────────────────────────────────────────────── */
1141.mcp-server-list {
1142 display: flex;
1143 flex-direction: column;
1144 gap: 8px;
1145 margin-top: 16px;
1146}
1147
1148.mcp-empty {
1149 color: var(--text-secondary);
1150 font-size: 12px;
1151 font-style: italic;
1152 padding: 12px;
1153 text-align: center;
1154 border: 1px dashed var(--border);
1155 border-radius: 4px;
1156}
1157
1158.mcp-server-card {
1159 display: flex;
1160 align-items: center;
1161 justify-content: space-between;
1162 padding: 10px 12px;
1163 background: var(--bg-secondary);
1164 border: 1px solid var(--border);
1165 border-radius: 4px;
1166}
1167
1168.mcp-server-info {
1169 display: flex;
1170 align-items: center;
1171 gap: 10px;
1172 min-width: 0;
1173 flex: 1;
1174}
1175
1176.mcp-server-name {
1177 font-weight: 600;
1178 font-size: 13px;
1179 color: var(--text-primary);
1180}
1181
1182.mcp-server-type {
1183 font-size: 10px;
1184 text-transform: uppercase;
1185 letter-spacing: 0.05em;
1186 padding: 2px 6px;
1187 background: var(--bg-tertiary);
1188 border-radius: 3px;
1189 color: var(--text-secondary);
1190}
1191
1192.mcp-server-detail {
1193 font-size: 11px;
1194 color: var(--text-secondary);
1195 font-family: var(--font-mono, monospace);
1196 white-space: nowrap;
1197 overflow: hidden;
1198 text-overflow: ellipsis;
1199 flex: 1;
1200 min-width: 0;
1201}
1202
1203.mcp-server-actions {
1204 display: flex;
1205 gap: 6px;
1206 flex-shrink: 0;
1207}
1208
1209.mcp-error {
1210 padding: 8px 12px;
1211 background: rgba(239, 68, 68, 0.1);
1212 border: 1px solid rgba(239, 68, 68, 0.3);
1213 border-radius: 4px;
1214 color: #ef4444;
1215 font-size: 12px;
1216 margin-top: 12px;
1217}
1218
1219.mcp-server-form {
1220 margin-top: 16px;
1221 padding: 16px;
1222 background: var(--bg-secondary);
1223 border: 1px solid var(--border);
1224 border-radius: 6px;
1225}
1226
1227.mcp-form-title {
1228 font-size: 14px;
1229 font-weight: 600;
1230 color: var(--text-primary);
1231 margin-bottom: 16px;
1232}
1233
1234.mcp-form-field {
1235 margin-bottom: 14px;
1236}
1237
1238.mcp-form-field label {
1239 display: block;
1240 font-size: 11px;
1241 font-weight: 500;
1242 text-transform: uppercase;
1243 letter-spacing: 0.05em;
1244 color: var(--text-secondary);
1245 margin-bottom: 6px;
1246}
1247
1248.mcp-form-field input,
1249.mcp-form-field select {
1250 width: 100%;
1251 padding: 8px 10px;
1252 background: var(--bg-primary);
1253 border: 1px solid var(--border);
1254 border-radius: 4px;
1255 color: var(--text-primary);
1256 font-size: 13px;
1257 font-family: var(--font-mono, monospace);
1258 box-sizing: border-box;
1259}
1260
1261.mcp-form-field input:focus,
1262.mcp-form-field select:focus {
1263 outline: none;
1264 border-color: var(--accent);
1265}
1266
1267.mcp-form-field select {
1268 cursor: pointer;
1269}
1270
1271.mcp-array-builder,
1272.mcp-kv-builder {
1273 display: flex;
1274 flex-direction: column;
1275 gap: 6px;
1276}
1277
1278.mcp-array-row {
1279 display: flex;
1280 gap: 6px;
1281}
1282
1283.mcp-array-row input {
1284 flex: 1;
1285}
1286
1287.mcp-kv-row {
1288 display: flex;
1289 align-items: center;
1290 gap: 6px;
1291}
1292
1293.mcp-kv-row input:first-child {
1294 flex: 0 0 35%;
1295}
1296
1297.mcp-kv-row input:nth-child(3) {
1298 flex: 1;
1299}
1300
1301.mcp-kv-sep {
1302 color: var(--text-secondary);
1303 font-family: var(--font-mono, monospace);
1304 font-size: 13px;
1305}
1306
1307.btn-icon {
1308 width: 28px;
1309 height: 28px;
1310 padding: 0;
1311 display: flex;
1312 align-items: center;
1313 justify-content: center;
1314 background: transparent;
1315 border: 1px solid var(--border);
1316 border-radius: 4px;
1317 color: var(--text-secondary);
1318 cursor: pointer;
1319 font-size: 16px;
1320 flex-shrink: 0;
1321}
1322
1323.btn-icon:hover {
1324 background: var(--bg-tertiary);
1325 color: var(--text-primary);
1326}
1327
1328.btn-small {
1329 padding: 4px 8px;
1330 font-size: 11px;
1331}
1332
1333.btn-danger {
1334 color: #ef4444;
1335 border-color: rgba(239, 68, 68, 0.3);
1336}
1337
1338.btn-danger:hover {
1339 background: rgba(239, 68, 68, 0.1);
1340 color: #ef4444;
1341}
1342
1343.mcp-form-actions {
1344 display: flex;
1345 justify-content: flex-end;
1346 gap: 8px;
1347 margin-top: 20px;
1348 padding-top: 16px;
1349 border-top: 1px solid var(--border);
1350}