@youtyan/code-viewer 0.1.53 → 0.2.0
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/README.md +38 -6
- package/dist/code-viewer.js +3624 -600
- package/package.json +1 -1
- package/skills/code-viewer-annotate/SKILL.md +26 -0
- package/web/app.js +9536 -6555
- package/web/index.html +4 -2
- package/web/style.css +980 -23
package/web/style.css
CHANGED
|
@@ -282,12 +282,12 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
282
282
|
z-index: 50;
|
|
283
283
|
}
|
|
284
284
|
.brand {
|
|
285
|
-
display: flex; align-items: center; gap:
|
|
285
|
+
display: flex; align-items: center; gap: 8px;
|
|
286
286
|
font-weight: 600;
|
|
287
287
|
font-size: 15px;
|
|
288
288
|
color: var(--fg);
|
|
289
289
|
min-width: 0;
|
|
290
|
-
max-width: min(
|
|
290
|
+
max-width: min(40vw, 560px);
|
|
291
291
|
flex: 0 1 auto;
|
|
292
292
|
text-decoration: none;
|
|
293
293
|
}
|
|
@@ -304,6 +304,34 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
304
304
|
text-overflow: ellipsis;
|
|
305
305
|
white-space: nowrap;
|
|
306
306
|
}
|
|
307
|
+
.project-branch {
|
|
308
|
+
display: inline-flex;
|
|
309
|
+
align-items: center;
|
|
310
|
+
height: 24px;
|
|
311
|
+
flex: 0 1 auto;
|
|
312
|
+
max-width: min(20vw, 260px);
|
|
313
|
+
overflow: hidden;
|
|
314
|
+
text-overflow: ellipsis;
|
|
315
|
+
white-space: nowrap;
|
|
316
|
+
padding: 0 8px;
|
|
317
|
+
border: 1px solid var(--border);
|
|
318
|
+
border-radius: 999px;
|
|
319
|
+
background: color-mix(in srgb, var(--bg) 72%, var(--bg-soft));
|
|
320
|
+
color: var(--fg-muted);
|
|
321
|
+
font-family: "Monaspace Neon", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
322
|
+
font-size: 11px;
|
|
323
|
+
font-weight: 600;
|
|
324
|
+
line-height: 1;
|
|
325
|
+
}
|
|
326
|
+
.project-branch::before {
|
|
327
|
+
content: "";
|
|
328
|
+
flex: 0 0 auto;
|
|
329
|
+
width: 6px;
|
|
330
|
+
height: 6px;
|
|
331
|
+
margin-right: 6px;
|
|
332
|
+
border-radius: 999px;
|
|
333
|
+
background: var(--success);
|
|
334
|
+
}
|
|
307
335
|
|
|
308
336
|
.app-menu {
|
|
309
337
|
display: flex;
|
|
@@ -1005,6 +1033,29 @@ body.gdp-history-page.gdp-sidebar-hidden main#content {
|
|
|
1005
1033
|
body.gdp-history-page #sidebar-resizer {
|
|
1006
1034
|
left: calc(var(--history-w) + var(--sidebar-w) - 4px);
|
|
1007
1035
|
}
|
|
1036
|
+
body.gdp-history-page #repo-target-wrap {
|
|
1037
|
+
display: none !important;
|
|
1038
|
+
}
|
|
1039
|
+
#history-resizer {
|
|
1040
|
+
display: none;
|
|
1041
|
+
position: fixed;
|
|
1042
|
+
top: var(--chrome-h);
|
|
1043
|
+
bottom: 0;
|
|
1044
|
+
left: calc(var(--history-w) - 4px);
|
|
1045
|
+
width: 8px;
|
|
1046
|
+
cursor: col-resize;
|
|
1047
|
+
z-index: 32;
|
|
1048
|
+
background: transparent;
|
|
1049
|
+
transition: background 0.12s;
|
|
1050
|
+
}
|
|
1051
|
+
body.gdp-history-page #history-resizer {
|
|
1052
|
+
display: block;
|
|
1053
|
+
}
|
|
1054
|
+
#history-resizer:hover,
|
|
1055
|
+
body.gdp-history-resizing #history-resizer {
|
|
1056
|
+
background: var(--accent);
|
|
1057
|
+
opacity: 0.5;
|
|
1058
|
+
}
|
|
1008
1059
|
/* The history screen drives its diff range from the commit list; the topbar
|
|
1009
1060
|
from/to pickers belong to the Diff Viewer and are hidden here. */
|
|
1010
1061
|
body.gdp-history-page #topbar .ref-pickers {
|
|
@@ -1135,6 +1186,14 @@ body.gdp-history-page #topbar .ref-pickers {
|
|
|
1135
1186
|
background: var(--bg-mute);
|
|
1136
1187
|
border-left-color: var(--accent);
|
|
1137
1188
|
}
|
|
1189
|
+
.history-item-worktree {
|
|
1190
|
+
background: color-mix(in srgb, var(--bg-soft) 72%, var(--bg-mute));
|
|
1191
|
+
color: var(--fg-muted);
|
|
1192
|
+
font-style: italic;
|
|
1193
|
+
}
|
|
1194
|
+
.history-item-worktree .sha {
|
|
1195
|
+
font-style: normal;
|
|
1196
|
+
}
|
|
1138
1197
|
.history-item .subject {
|
|
1139
1198
|
display: block;
|
|
1140
1199
|
font-size: 12.5px;
|
|
@@ -1158,8 +1217,8 @@ body.gdp-history-page #topbar .ref-pickers {
|
|
|
1158
1217
|
#history-sentinel { height: 1px; }
|
|
1159
1218
|
#history-commit-info {
|
|
1160
1219
|
display: none;
|
|
1161
|
-
margin:
|
|
1162
|
-
padding:
|
|
1220
|
+
margin: 0 0 16px;
|
|
1221
|
+
padding: 16px 20px 18px;
|
|
1163
1222
|
border: 1px solid var(--border);
|
|
1164
1223
|
border-radius: 8px;
|
|
1165
1224
|
background: var(--bg-soft);
|
|
@@ -1178,13 +1237,13 @@ body.gdp-history-page #history-commit-info:not([hidden]) { display: block; }
|
|
|
1178
1237
|
user-select: all;
|
|
1179
1238
|
}
|
|
1180
1239
|
#history-commit-info .hci-subject {
|
|
1181
|
-
margin:
|
|
1240
|
+
margin: 8px 0 0;
|
|
1182
1241
|
font-size: 15px;
|
|
1183
1242
|
line-height: 1.4;
|
|
1184
1243
|
overflow-wrap: anywhere;
|
|
1185
1244
|
}
|
|
1186
1245
|
#history-commit-info .hci-body {
|
|
1187
|
-
margin:
|
|
1246
|
+
margin: 12px 0 0;
|
|
1188
1247
|
padding: 0;
|
|
1189
1248
|
background: transparent;
|
|
1190
1249
|
border: 0;
|
|
@@ -1192,9 +1251,67 @@ body.gdp-history-page #history-commit-info:not([hidden]) { display: block; }
|
|
|
1192
1251
|
font-size: 12.5px;
|
|
1193
1252
|
line-height: 1.6;
|
|
1194
1253
|
color: var(--fg-muted);
|
|
1195
|
-
white-space: pre-wrap;
|
|
1196
1254
|
overflow-wrap: anywhere;
|
|
1197
1255
|
}
|
|
1256
|
+
#history-commit-info .hci-body .gdp-markdown-preview {
|
|
1257
|
+
color: inherit;
|
|
1258
|
+
font-size: inherit;
|
|
1259
|
+
line-height: inherit;
|
|
1260
|
+
}
|
|
1261
|
+
#history-commit-info .hci-body .gdp-markdown-preview > :first-child {
|
|
1262
|
+
margin-top: 0;
|
|
1263
|
+
}
|
|
1264
|
+
#history-commit-info .hci-body .gdp-markdown-preview > :last-child {
|
|
1265
|
+
margin-bottom: 0;
|
|
1266
|
+
}
|
|
1267
|
+
.hci-body-expandable {
|
|
1268
|
+
display: block;
|
|
1269
|
+
}
|
|
1270
|
+
.hci-body-collapsible {
|
|
1271
|
+
position: relative;
|
|
1272
|
+
max-height: calc(10em * 1.6 + 8px);
|
|
1273
|
+
overflow: hidden;
|
|
1274
|
+
transition: max-height 200ms ease;
|
|
1275
|
+
}
|
|
1276
|
+
.hci-body-collapsible.expanded {
|
|
1277
|
+
max-height: none;
|
|
1278
|
+
}
|
|
1279
|
+
.hci-body-collapsible:not(.expanded)::after {
|
|
1280
|
+
content: "";
|
|
1281
|
+
position: absolute;
|
|
1282
|
+
left: 0;
|
|
1283
|
+
right: 0;
|
|
1284
|
+
bottom: 0;
|
|
1285
|
+
height: 52px;
|
|
1286
|
+
background: linear-gradient(to bottom, transparent, var(--bg-soft));
|
|
1287
|
+
pointer-events: none;
|
|
1288
|
+
}
|
|
1289
|
+
.hci-body-toggle {
|
|
1290
|
+
display: flex;
|
|
1291
|
+
align-items: center;
|
|
1292
|
+
justify-content: center;
|
|
1293
|
+
width: 100%;
|
|
1294
|
+
min-height: 36px;
|
|
1295
|
+
margin-top: 0;
|
|
1296
|
+
padding: 8px 12px;
|
|
1297
|
+
border-top: 1px solid var(--border);
|
|
1298
|
+
background: transparent;
|
|
1299
|
+
color: var(--fg);
|
|
1300
|
+
font-size: 12px;
|
|
1301
|
+
font-weight: 500;
|
|
1302
|
+
cursor: pointer;
|
|
1303
|
+
user-select: none;
|
|
1304
|
+
transition: background 120ms ease, color 120ms ease;
|
|
1305
|
+
}
|
|
1306
|
+
.hci-body-toggle:hover,
|
|
1307
|
+
.hci-body-toggle:focus-visible {
|
|
1308
|
+
background: var(--bg-mute);
|
|
1309
|
+
color: var(--fg);
|
|
1310
|
+
}
|
|
1311
|
+
.hci-body-toggle:focus-visible {
|
|
1312
|
+
outline: 2px solid var(--accent);
|
|
1313
|
+
outline-offset: 2px;
|
|
1314
|
+
}
|
|
1198
1315
|
|
|
1199
1316
|
/* ===== Sidebar ===== */
|
|
1200
1317
|
#sidebar {
|
|
@@ -1444,18 +1561,26 @@ body.gdp-resizing #sidebar-resizer {
|
|
|
1444
1561
|
|
|
1445
1562
|
/* Lightweight preview line shown only while dragging — avoids reflowing the
|
|
1446
1563
|
* (very tall) diff content on every mousemove. */
|
|
1447
|
-
#sidebar-resize-preview
|
|
1564
|
+
#sidebar-resize-preview,
|
|
1565
|
+
#history-resize-preview {
|
|
1448
1566
|
display: none;
|
|
1449
1567
|
position: fixed;
|
|
1450
|
-
top:
|
|
1568
|
+
top: var(--chrome-h); bottom: 0;
|
|
1451
1569
|
width: 2px;
|
|
1452
1570
|
background: var(--accent);
|
|
1453
1571
|
z-index: 100;
|
|
1454
1572
|
pointer-events: none;
|
|
1455
1573
|
box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 25%, transparent);
|
|
1456
1574
|
}
|
|
1457
|
-
body.gdp-resizing
|
|
1458
|
-
body.gdp-resizing
|
|
1575
|
+
body.gdp-resizing,
|
|
1576
|
+
body.gdp-history-resizing {
|
|
1577
|
+
cursor: col-resize !important;
|
|
1578
|
+
user-select: none;
|
|
1579
|
+
}
|
|
1580
|
+
body.gdp-resizing *,
|
|
1581
|
+
body.gdp-history-resizing * {
|
|
1582
|
+
user-select: none !important;
|
|
1583
|
+
}
|
|
1459
1584
|
|
|
1460
1585
|
#scope-settings-popover {
|
|
1461
1586
|
position: fixed;
|
|
@@ -4226,6 +4351,9 @@ body.gdp-file-detail-page #empty {
|
|
|
4226
4351
|
border-bottom: 1px solid var(--border);
|
|
4227
4352
|
}
|
|
4228
4353
|
body.gdp-history-page #sidebar { left: 0; }
|
|
4354
|
+
body.gdp-history-page #history-resizer {
|
|
4355
|
+
display: none;
|
|
4356
|
+
}
|
|
4229
4357
|
body.gdp-history-page main#content,
|
|
4230
4358
|
body.gdp-history-page.gdp-sidebar-hidden main#content {
|
|
4231
4359
|
margin-left: 0;
|
|
@@ -4527,7 +4655,8 @@ body.gdp-file-detail-page #empty {
|
|
|
4527
4655
|
/* Pages without the diff topbar start the panel right below the header. */
|
|
4528
4656
|
body.gdp-repo-page #annotation-panel,
|
|
4529
4657
|
body.gdp-file-detail-page #annotation-panel,
|
|
4530
|
-
body.gdp-help-page #annotation-panel
|
|
4658
|
+
body.gdp-help-page #annotation-panel,
|
|
4659
|
+
body.gdp-database-page #annotation-panel {
|
|
4531
4660
|
top: var(--global-header-h);
|
|
4532
4661
|
}
|
|
4533
4662
|
/* Keep code readable next to the panel instead of underneath it. */
|
|
@@ -5147,6 +5276,63 @@ body.query-history-panel-open #content {
|
|
|
5147
5276
|
height: 0;
|
|
5148
5277
|
}
|
|
5149
5278
|
|
|
5279
|
+
.gdp-db-annotation-strip {
|
|
5280
|
+
display: grid;
|
|
5281
|
+
gap: 8px;
|
|
5282
|
+
flex-shrink: 0;
|
|
5283
|
+
max-height: min(40vh, 360px);
|
|
5284
|
+
overflow: auto;
|
|
5285
|
+
padding: 8px 10px;
|
|
5286
|
+
border-bottom: 1px solid var(--border);
|
|
5287
|
+
background: var(--bg);
|
|
5288
|
+
}
|
|
5289
|
+
|
|
5290
|
+
.gdp-db-annotation-inline {
|
|
5291
|
+
border: 1px solid var(--accent);
|
|
5292
|
+
border-radius: 6px;
|
|
5293
|
+
background: color-mix(in srgb, var(--accent) 7%, var(--bg));
|
|
5294
|
+
box-shadow: var(--shadow-sm);
|
|
5295
|
+
}
|
|
5296
|
+
|
|
5297
|
+
.gdp-db-annotation-inline.active {
|
|
5298
|
+
outline: 2px solid color-mix(in srgb, var(--accent) 35%, transparent);
|
|
5299
|
+
}
|
|
5300
|
+
|
|
5301
|
+
.gdp-db-annotation-inline-head {
|
|
5302
|
+
display: flex;
|
|
5303
|
+
align-items: center;
|
|
5304
|
+
gap: 8px;
|
|
5305
|
+
padding: 8px 10px 0;
|
|
5306
|
+
}
|
|
5307
|
+
|
|
5308
|
+
.gdp-db-annotation-inline-title {
|
|
5309
|
+
border: 0;
|
|
5310
|
+
background: transparent;
|
|
5311
|
+
color: var(--fg);
|
|
5312
|
+
font: inherit;
|
|
5313
|
+
font-weight: 700;
|
|
5314
|
+
padding: 0;
|
|
5315
|
+
cursor: pointer;
|
|
5316
|
+
}
|
|
5317
|
+
|
|
5318
|
+
.gdp-db-annotation-inline-location {
|
|
5319
|
+
min-width: 0;
|
|
5320
|
+
color: var(--muted);
|
|
5321
|
+
font-size: 12px;
|
|
5322
|
+
overflow: hidden;
|
|
5323
|
+
text-overflow: ellipsis;
|
|
5324
|
+
white-space: nowrap;
|
|
5325
|
+
}
|
|
5326
|
+
|
|
5327
|
+
.gdp-db-annotation-inline-body {
|
|
5328
|
+
padding: 6px 10px 10px;
|
|
5329
|
+
color: var(--fg);
|
|
5330
|
+
}
|
|
5331
|
+
|
|
5332
|
+
.gdp-db-annotation-inline-body p:last-child {
|
|
5333
|
+
margin-bottom: 0;
|
|
5334
|
+
}
|
|
5335
|
+
|
|
5150
5336
|
/* ============================================================
|
|
5151
5337
|
Database Viewer
|
|
5152
5338
|
============================================================ */
|
|
@@ -5154,11 +5340,8 @@ body.query-history-panel-open #content {
|
|
|
5154
5340
|
.gdp-database-page #topbar,
|
|
5155
5341
|
.gdp-database-page #sidebar,
|
|
5156
5342
|
.gdp-database-page #sidebar-toggle,
|
|
5157
|
-
.gdp-database-page #annotation-panel,
|
|
5158
5343
|
.gdp-database-page #sidebar-resizer,
|
|
5159
|
-
.gdp-database-page #
|
|
5160
|
-
.gdp-database-page #query-history-panel,
|
|
5161
|
-
.gdp-database-page #query-history-toggle {
|
|
5344
|
+
.gdp-database-page #query-history-panel {
|
|
5162
5345
|
display: none !important;
|
|
5163
5346
|
}
|
|
5164
5347
|
|
|
@@ -5169,29 +5352,42 @@ body.query-history-panel-open #content {
|
|
|
5169
5352
|
max-width: none;
|
|
5170
5353
|
}
|
|
5171
5354
|
|
|
5355
|
+
.db-root,
|
|
5172
5356
|
.db-container {
|
|
5173
5357
|
--db-font-sm: 11px;
|
|
5174
5358
|
--db-font-base: 12px;
|
|
5175
5359
|
--db-font-md: 13px;
|
|
5176
5360
|
--db-font-mono: 13px;
|
|
5361
|
+
}
|
|
5362
|
+
|
|
5363
|
+
.db-container {
|
|
5177
5364
|
display: flex;
|
|
5178
5365
|
flex-direction: column;
|
|
5179
|
-
|
|
5366
|
+
/* `.db-tab-host` の中に置かれるので親の高さに合わせる。
|
|
5367
|
+
Round 5 multi-tab 以前は #content 直下だったため calc(100vh - header) で
|
|
5368
|
+
固定していたが、いまは .db-root > .db-tabs-bar (固定) + .db-tab-host
|
|
5369
|
+
(flex: 1) の下にいるため、ここで自分で viewport 高さを再計算すると
|
|
5370
|
+
親より縦長になり sidebar 末尾の history toggle が下にはみ出す。 */
|
|
5371
|
+
height: 100%;
|
|
5372
|
+
min-height: 0;
|
|
5180
5373
|
overflow: hidden;
|
|
5181
5374
|
font-size: var(--db-font-base);
|
|
5182
5375
|
}
|
|
5376
|
+
body[data-sidebar-font-size="compact"] .db-root,
|
|
5183
5377
|
body[data-sidebar-font-size="compact"] .db-container {
|
|
5184
5378
|
--db-font-sm: 10px;
|
|
5185
5379
|
--db-font-base: 11px;
|
|
5186
5380
|
--db-font-md: 12px;
|
|
5187
5381
|
--db-font-mono: 12px;
|
|
5188
5382
|
}
|
|
5383
|
+
body[data-sidebar-font-size="large"] .db-root,
|
|
5189
5384
|
body[data-sidebar-font-size="large"] .db-container {
|
|
5190
5385
|
--db-font-sm: 12px;
|
|
5191
5386
|
--db-font-base: 14px;
|
|
5192
5387
|
--db-font-md: 15px;
|
|
5193
5388
|
--db-font-mono: 14px;
|
|
5194
5389
|
}
|
|
5390
|
+
body[data-sidebar-font-size="xlarge"] .db-root,
|
|
5195
5391
|
body[data-sidebar-font-size="xlarge"] .db-container {
|
|
5196
5392
|
--db-font-sm: 13px;
|
|
5197
5393
|
--db-font-base: 15px;
|
|
@@ -5228,12 +5424,61 @@ body[data-sidebar-font-size="xlarge"] .db-container {
|
|
|
5228
5424
|
border-top: 1px solid var(--border);
|
|
5229
5425
|
padding: 6px 8px;
|
|
5230
5426
|
display: flex;
|
|
5231
|
-
|
|
5427
|
+
flex-direction: column;
|
|
5428
|
+
gap: 4px;
|
|
5429
|
+
flex-shrink: 0;
|
|
5430
|
+
}
|
|
5431
|
+
|
|
5432
|
+
/* ---------- Icon toolbar (案 B 改: TablePlus / Beekeeper 風) ---------- */
|
|
5433
|
+
.db-icon-toolbar {
|
|
5434
|
+
display: flex;
|
|
5435
|
+
flex-direction: row;
|
|
5436
|
+
align-items: center;
|
|
5437
|
+
gap: 2px;
|
|
5438
|
+
padding: 4px 6px;
|
|
5439
|
+
border-bottom: 1px solid var(--border);
|
|
5440
|
+
background: var(--bg);
|
|
5232
5441
|
flex-shrink: 0;
|
|
5442
|
+
min-height: 36px;
|
|
5443
|
+
}
|
|
5444
|
+
.db-icon-toolbar[hidden] {
|
|
5445
|
+
display: none !important;
|
|
5446
|
+
}
|
|
5447
|
+
.db-icon-btn {
|
|
5448
|
+
display: inline-flex;
|
|
5449
|
+
align-items: center;
|
|
5450
|
+
justify-content: center;
|
|
5451
|
+
width: 30px;
|
|
5452
|
+
height: 28px;
|
|
5453
|
+
padding: 0;
|
|
5454
|
+
border: none;
|
|
5455
|
+
background: transparent;
|
|
5456
|
+
color: var(--fg-muted);
|
|
5457
|
+
border-radius: 4px;
|
|
5458
|
+
cursor: pointer;
|
|
5459
|
+
font-size: var(--db-font-base);
|
|
5460
|
+
transition: background-color 0.12s, color 0.12s;
|
|
5461
|
+
}
|
|
5462
|
+
.db-icon-btn:hover {
|
|
5463
|
+
background: var(--bg-soft);
|
|
5464
|
+
color: var(--fg);
|
|
5465
|
+
}
|
|
5466
|
+
.db-icon-btn.active {
|
|
5467
|
+
background: color-mix(in srgb, var(--accent) 14%, transparent);
|
|
5468
|
+
color: var(--accent);
|
|
5469
|
+
}
|
|
5470
|
+
.db-icon-btn:focus-visible {
|
|
5471
|
+
outline: 2px solid var(--accent);
|
|
5472
|
+
outline-offset: -1px;
|
|
5473
|
+
}
|
|
5474
|
+
.db-icon-btn svg {
|
|
5475
|
+
pointer-events: none;
|
|
5476
|
+
width: 1.25em;
|
|
5477
|
+
height: 1.25em;
|
|
5233
5478
|
}
|
|
5234
5479
|
.db-tool-btn {
|
|
5235
|
-
|
|
5236
|
-
padding:
|
|
5480
|
+
width: 100%;
|
|
5481
|
+
padding: 6px 10px;
|
|
5237
5482
|
border: 1px solid var(--border);
|
|
5238
5483
|
border-radius: 6px;
|
|
5239
5484
|
background: var(--bg);
|
|
@@ -5241,7 +5486,10 @@ body[data-sidebar-font-size="xlarge"] .db-container {
|
|
|
5241
5486
|
font-size: var(--db-font-base);
|
|
5242
5487
|
font-family: inherit;
|
|
5243
5488
|
cursor: pointer;
|
|
5244
|
-
text-align:
|
|
5489
|
+
text-align: left;
|
|
5490
|
+
white-space: nowrap;
|
|
5491
|
+
overflow: hidden;
|
|
5492
|
+
text-overflow: ellipsis;
|
|
5245
5493
|
}
|
|
5246
5494
|
.db-tool-btn:hover {
|
|
5247
5495
|
background: var(--bg-mute);
|
|
@@ -5278,6 +5526,26 @@ body[data-sidebar-font-size="xlarge"] .db-container {
|
|
|
5278
5526
|
font-weight: 600;
|
|
5279
5527
|
}
|
|
5280
5528
|
|
|
5529
|
+
/* ---------- [hidden] 属性を効かせる ---------- */
|
|
5530
|
+
/* `.db-*` クラスの多くが `display: flex` を主張しており、ブラウザ標準の
|
|
5531
|
+
`[hidden] { display: none }` (specificity 0,1,0) と CSS specificity が
|
|
5532
|
+
同点で後勝ちで負ける。各要素について [hidden] 専用ルールを明示する。 */
|
|
5533
|
+
.db-tools-section[hidden],
|
|
5534
|
+
.db-tool-btn[hidden],
|
|
5535
|
+
.db-tab-bar[hidden],
|
|
5536
|
+
.db-history-toggle[hidden],
|
|
5537
|
+
.db-history-pane[hidden],
|
|
5538
|
+
.db-history-resizer[hidden],
|
|
5539
|
+
.db-table-list[hidden],
|
|
5540
|
+
.db-table-list-wrapper[hidden],
|
|
5541
|
+
.db-table-filter-wrap[hidden],
|
|
5542
|
+
.db-toolbar[hidden],
|
|
5543
|
+
.db-upper-area[hidden],
|
|
5544
|
+
.db-container[hidden],
|
|
5545
|
+
.db-tab-host[hidden] {
|
|
5546
|
+
display: none !important;
|
|
5547
|
+
}
|
|
5548
|
+
|
|
5281
5549
|
/* ---------- Sidebar ---------- */
|
|
5282
5550
|
.db-sidebar {
|
|
5283
5551
|
width: 260px;
|
|
@@ -5875,6 +6143,16 @@ html[data-theme="dark"] .db-query-highlight span[style] {
|
|
|
5875
6143
|
top: 0;
|
|
5876
6144
|
z-index: 1;
|
|
5877
6145
|
}
|
|
6146
|
+
.db-query-header-name {
|
|
6147
|
+
color: var(--fg);
|
|
6148
|
+
font-weight: 600;
|
|
6149
|
+
}
|
|
6150
|
+
.db-query-header-type {
|
|
6151
|
+
margin-top: 1px;
|
|
6152
|
+
color: var(--fg-subtle);
|
|
6153
|
+
font-size: var(--db-font-sm);
|
|
6154
|
+
font-weight: 400;
|
|
6155
|
+
}
|
|
5878
6156
|
.db-query-table tr.alt td {
|
|
5879
6157
|
background: var(--bg-soft);
|
|
5880
6158
|
}
|
|
@@ -5885,6 +6163,14 @@ html[data-theme="dark"] .db-query-highlight span[style] {
|
|
|
5885
6163
|
color: var(--fg-subtle);
|
|
5886
6164
|
font-style: italic;
|
|
5887
6165
|
}
|
|
6166
|
+
.db-query-table td.db-query-empty {
|
|
6167
|
+
padding: 22px 12px;
|
|
6168
|
+
color: var(--fg-muted);
|
|
6169
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans",
|
|
6170
|
+
Helvetica, Arial, sans-serif;
|
|
6171
|
+
font-style: normal;
|
|
6172
|
+
text-align: center;
|
|
6173
|
+
}
|
|
5888
6174
|
|
|
5889
6175
|
/* ---------- Schema View ---------- */
|
|
5890
6176
|
.db-schema-view {
|
|
@@ -6116,6 +6402,16 @@ html[data-theme="dark"] .db-query-highlight span[style] {
|
|
|
6116
6402
|
color: var(--danger);
|
|
6117
6403
|
background: none;
|
|
6118
6404
|
}
|
|
6405
|
+
.db-grid-detail-copy {
|
|
6406
|
+
font-size: 11px;
|
|
6407
|
+
padding: 2px 8px;
|
|
6408
|
+
margin-left: auto;
|
|
6409
|
+
margin-right: 8px;
|
|
6410
|
+
color: var(--fg-muted);
|
|
6411
|
+
}
|
|
6412
|
+
.db-grid-detail-copy:hover {
|
|
6413
|
+
color: var(--fg);
|
|
6414
|
+
}
|
|
6119
6415
|
|
|
6120
6416
|
.db-grid-detail-content {
|
|
6121
6417
|
padding: 8px 12px;
|
|
@@ -6514,7 +6810,8 @@ body.db-resizing {
|
|
|
6514
6810
|
margin-bottom: 12px;
|
|
6515
6811
|
}
|
|
6516
6812
|
.db-snapshot-create-btn,
|
|
6517
|
-
.db-snapshot-refresh-btn
|
|
6813
|
+
.db-snapshot-refresh-btn,
|
|
6814
|
+
.db-snapshot-job-cancel-btn {
|
|
6518
6815
|
padding: 6px 14px;
|
|
6519
6816
|
border: 1px solid var(--border);
|
|
6520
6817
|
border-radius: 4px;
|
|
@@ -6524,7 +6821,8 @@ body.db-resizing {
|
|
|
6524
6821
|
font-size: var(--db-font-base);
|
|
6525
6822
|
}
|
|
6526
6823
|
.db-snapshot-create-btn:hover,
|
|
6527
|
-
.db-snapshot-refresh-btn:hover
|
|
6824
|
+
.db-snapshot-refresh-btn:hover,
|
|
6825
|
+
.db-snapshot-job-cancel-btn:hover {
|
|
6528
6826
|
background: var(--bg-mute);
|
|
6529
6827
|
}
|
|
6530
6828
|
.db-snapshot-table-selector {
|
|
@@ -6957,3 +7255,662 @@ body.db-resizing {
|
|
|
6957
7255
|
background: var(--bg-soft);
|
|
6958
7256
|
align-items: center;
|
|
6959
7257
|
}
|
|
7258
|
+
|
|
7259
|
+
/* ---------- Redis explorer ---------- */
|
|
7260
|
+
.redis-explorer {
|
|
7261
|
+
flex: 1;
|
|
7262
|
+
display: flex;
|
|
7263
|
+
flex-direction: row;
|
|
7264
|
+
overflow: hidden;
|
|
7265
|
+
background: var(--bg);
|
|
7266
|
+
font-size: var(--db-font-base);
|
|
7267
|
+
}
|
|
7268
|
+
.redis-explorer[hidden] {
|
|
7269
|
+
display: none;
|
|
7270
|
+
}
|
|
7271
|
+
.redis-db-list-pane {
|
|
7272
|
+
width: 220px;
|
|
7273
|
+
border-right: 1px solid var(--border);
|
|
7274
|
+
display: flex;
|
|
7275
|
+
flex-direction: column;
|
|
7276
|
+
overflow: hidden;
|
|
7277
|
+
background: var(--bg-soft);
|
|
7278
|
+
}
|
|
7279
|
+
.db-explorer-pane-header {
|
|
7280
|
+
padding: 8px 12px;
|
|
7281
|
+
font-weight: 600;
|
|
7282
|
+
font-size: var(--db-font-md);
|
|
7283
|
+
border-bottom: 1px solid var(--border);
|
|
7284
|
+
background: var(--bg);
|
|
7285
|
+
flex-shrink: 0;
|
|
7286
|
+
}
|
|
7287
|
+
.redis-db-list {
|
|
7288
|
+
flex: 1;
|
|
7289
|
+
overflow-y: auto;
|
|
7290
|
+
padding: 4px 0;
|
|
7291
|
+
}
|
|
7292
|
+
.redis-db-item {
|
|
7293
|
+
display: flex;
|
|
7294
|
+
justify-content: space-between;
|
|
7295
|
+
align-items: center;
|
|
7296
|
+
padding: 6px 12px;
|
|
7297
|
+
cursor: pointer;
|
|
7298
|
+
border-left: 2px solid transparent;
|
|
7299
|
+
user-select: none;
|
|
7300
|
+
}
|
|
7301
|
+
.redis-db-item:hover {
|
|
7302
|
+
background: var(--bg-hover, var(--bg));
|
|
7303
|
+
}
|
|
7304
|
+
.redis-db-item.active {
|
|
7305
|
+
background: var(--bg-active, var(--bg-soft));
|
|
7306
|
+
border-left-color: var(--accent);
|
|
7307
|
+
}
|
|
7308
|
+
.redis-db-name {
|
|
7309
|
+
font-family: var(--mono, monospace);
|
|
7310
|
+
font-size: var(--db-font-mono);
|
|
7311
|
+
font-weight: 500;
|
|
7312
|
+
}
|
|
7313
|
+
.redis-db-count {
|
|
7314
|
+
font-size: var(--db-font-sm);
|
|
7315
|
+
color: var(--fg-muted);
|
|
7316
|
+
}
|
|
7317
|
+
.redis-key-list-pane {
|
|
7318
|
+
width: 320px;
|
|
7319
|
+
border-right: 1px solid var(--border);
|
|
7320
|
+
display: flex;
|
|
7321
|
+
flex-direction: column;
|
|
7322
|
+
overflow: hidden;
|
|
7323
|
+
background: var(--bg);
|
|
7324
|
+
}
|
|
7325
|
+
.redis-key-filter-form {
|
|
7326
|
+
display: flex;
|
|
7327
|
+
gap: 6px;
|
|
7328
|
+
padding: 8px;
|
|
7329
|
+
border-bottom: 1px solid var(--border);
|
|
7330
|
+
background: var(--bg-soft);
|
|
7331
|
+
}
|
|
7332
|
+
.redis-key-filter {
|
|
7333
|
+
flex: 1;
|
|
7334
|
+
min-width: 0;
|
|
7335
|
+
padding: 5px 7px;
|
|
7336
|
+
border: 1px solid var(--border);
|
|
7337
|
+
border-radius: 6px;
|
|
7338
|
+
background: var(--bg);
|
|
7339
|
+
color: var(--fg);
|
|
7340
|
+
font: inherit;
|
|
7341
|
+
}
|
|
7342
|
+
.redis-key-filter-btn {
|
|
7343
|
+
padding: 5px 8px;
|
|
7344
|
+
border: 1px solid var(--border);
|
|
7345
|
+
border-radius: 6px;
|
|
7346
|
+
background: var(--bg);
|
|
7347
|
+
color: var(--fg);
|
|
7348
|
+
cursor: pointer;
|
|
7349
|
+
font: inherit;
|
|
7350
|
+
}
|
|
7351
|
+
.redis-key-filter-btn:hover {
|
|
7352
|
+
background: var(--bg-hover, var(--bg));
|
|
7353
|
+
}
|
|
7354
|
+
.redis-key-list {
|
|
7355
|
+
flex: 1;
|
|
7356
|
+
overflow-y: auto;
|
|
7357
|
+
padding: 4px 0;
|
|
7358
|
+
}
|
|
7359
|
+
.redis-key-item {
|
|
7360
|
+
display: flex;
|
|
7361
|
+
align-items: center;
|
|
7362
|
+
gap: 6px;
|
|
7363
|
+
padding: 4px 12px;
|
|
7364
|
+
cursor: pointer;
|
|
7365
|
+
border-left: 2px solid transparent;
|
|
7366
|
+
user-select: none;
|
|
7367
|
+
font-family: var(--mono, monospace);
|
|
7368
|
+
font-size: var(--db-font-mono);
|
|
7369
|
+
}
|
|
7370
|
+
.redis-key-item:hover {
|
|
7371
|
+
background: var(--bg-hover, var(--bg-soft));
|
|
7372
|
+
}
|
|
7373
|
+
.redis-key-item.active {
|
|
7374
|
+
background: var(--bg-active, var(--bg-soft));
|
|
7375
|
+
border-left-color: var(--accent);
|
|
7376
|
+
}
|
|
7377
|
+
.redis-key-name {
|
|
7378
|
+
overflow: hidden;
|
|
7379
|
+
text-overflow: ellipsis;
|
|
7380
|
+
white-space: nowrap;
|
|
7381
|
+
flex: 1;
|
|
7382
|
+
}
|
|
7383
|
+
.redis-type-badge {
|
|
7384
|
+
display: inline-block;
|
|
7385
|
+
padding: 0 6px;
|
|
7386
|
+
border-radius: 3px;
|
|
7387
|
+
font-size: var(--db-font-sm);
|
|
7388
|
+
font-family: var(--mono, monospace);
|
|
7389
|
+
text-transform: uppercase;
|
|
7390
|
+
background: var(--bg-soft);
|
|
7391
|
+
color: var(--fg-muted);
|
|
7392
|
+
border: 1px solid var(--border);
|
|
7393
|
+
flex-shrink: 0;
|
|
7394
|
+
min-width: 44px;
|
|
7395
|
+
text-align: center;
|
|
7396
|
+
}
|
|
7397
|
+
.redis-type-string {
|
|
7398
|
+
background: #e8f0ff;
|
|
7399
|
+
color: #224a8a;
|
|
7400
|
+
}
|
|
7401
|
+
.redis-type-hash {
|
|
7402
|
+
background: #fff4e0;
|
|
7403
|
+
color: #8a5a22;
|
|
7404
|
+
}
|
|
7405
|
+
.redis-type-list {
|
|
7406
|
+
background: #e8f8e8;
|
|
7407
|
+
color: #226a3a;
|
|
7408
|
+
}
|
|
7409
|
+
.redis-type-set {
|
|
7410
|
+
background: #f0e8f8;
|
|
7411
|
+
color: #5a228a;
|
|
7412
|
+
}
|
|
7413
|
+
.redis-type-zset {
|
|
7414
|
+
background: #f8e8e8;
|
|
7415
|
+
color: #8a2a3a;
|
|
7416
|
+
}
|
|
7417
|
+
.redis-type-stream {
|
|
7418
|
+
background: #e8f8f8;
|
|
7419
|
+
color: #226a8a;
|
|
7420
|
+
}
|
|
7421
|
+
.redis-key-more-btn {
|
|
7422
|
+
padding: 6px;
|
|
7423
|
+
border: none;
|
|
7424
|
+
border-top: 1px solid var(--border);
|
|
7425
|
+
background: var(--bg-soft);
|
|
7426
|
+
cursor: pointer;
|
|
7427
|
+
font-size: var(--db-font-sm);
|
|
7428
|
+
color: var(--fg);
|
|
7429
|
+
}
|
|
7430
|
+
.redis-key-more-btn:hover {
|
|
7431
|
+
background: var(--bg-hover, var(--bg));
|
|
7432
|
+
}
|
|
7433
|
+
.redis-key-more-btn:disabled {
|
|
7434
|
+
cursor: default;
|
|
7435
|
+
color: var(--fg-muted);
|
|
7436
|
+
}
|
|
7437
|
+
.redis-main-pane {
|
|
7438
|
+
flex: 1;
|
|
7439
|
+
display: flex;
|
|
7440
|
+
flex-direction: column;
|
|
7441
|
+
overflow: hidden;
|
|
7442
|
+
padding: 12px;
|
|
7443
|
+
color: var(--fg);
|
|
7444
|
+
gap: 8px;
|
|
7445
|
+
}
|
|
7446
|
+
.redis-value-header {
|
|
7447
|
+
display: flex;
|
|
7448
|
+
align-items: center;
|
|
7449
|
+
gap: 8px;
|
|
7450
|
+
padding-bottom: 8px;
|
|
7451
|
+
border-bottom: 1px solid var(--border);
|
|
7452
|
+
flex-shrink: 0;
|
|
7453
|
+
}
|
|
7454
|
+
.redis-value-key-name {
|
|
7455
|
+
font-family: var(--mono, monospace);
|
|
7456
|
+
font-size: var(--db-font-mono);
|
|
7457
|
+
font-weight: 600;
|
|
7458
|
+
overflow: hidden;
|
|
7459
|
+
text-overflow: ellipsis;
|
|
7460
|
+
white-space: nowrap;
|
|
7461
|
+
}
|
|
7462
|
+
.redis-value-body {
|
|
7463
|
+
flex: 1;
|
|
7464
|
+
overflow: auto;
|
|
7465
|
+
min-height: 0;
|
|
7466
|
+
}
|
|
7467
|
+
.redis-value-empty {
|
|
7468
|
+
color: var(--fg-muted);
|
|
7469
|
+
font-size: var(--db-font-base);
|
|
7470
|
+
font-style: italic;
|
|
7471
|
+
}
|
|
7472
|
+
.redis-value-info,
|
|
7473
|
+
.redis-value-truncation {
|
|
7474
|
+
padding: 4px 8px;
|
|
7475
|
+
margin-bottom: 6px;
|
|
7476
|
+
border-radius: 4px;
|
|
7477
|
+
font-size: var(--db-font-sm);
|
|
7478
|
+
font-family: var(--mono, monospace);
|
|
7479
|
+
}
|
|
7480
|
+
.redis-value-info {
|
|
7481
|
+
background: var(--bg-soft);
|
|
7482
|
+
color: var(--fg-muted);
|
|
7483
|
+
}
|
|
7484
|
+
.redis-value-truncation {
|
|
7485
|
+
background: #fff4e0;
|
|
7486
|
+
color: #8a5a22;
|
|
7487
|
+
border: 1px solid #f0d8a0;
|
|
7488
|
+
}
|
|
7489
|
+
.redis-binary-badge {
|
|
7490
|
+
display: inline-block;
|
|
7491
|
+
padding: 0 6px;
|
|
7492
|
+
margin-right: 6px;
|
|
7493
|
+
border-radius: 3px;
|
|
7494
|
+
font-size: var(--db-font-sm);
|
|
7495
|
+
font-family: var(--mono, monospace);
|
|
7496
|
+
text-transform: uppercase;
|
|
7497
|
+
background: #f0e8f8;
|
|
7498
|
+
color: #5a228a;
|
|
7499
|
+
border: 1px solid #d0c0e0;
|
|
7500
|
+
vertical-align: middle;
|
|
7501
|
+
}
|
|
7502
|
+
.redis-value-string,
|
|
7503
|
+
.redis-value-raw-json {
|
|
7504
|
+
font-family: var(--mono, monospace);
|
|
7505
|
+
font-size: var(--db-font-mono);
|
|
7506
|
+
white-space: pre-wrap;
|
|
7507
|
+
word-break: break-all;
|
|
7508
|
+
margin: 0;
|
|
7509
|
+
padding: 8px;
|
|
7510
|
+
background: var(--bg-soft);
|
|
7511
|
+
border-radius: 4px;
|
|
7512
|
+
}
|
|
7513
|
+
.redis-value-hash-table {
|
|
7514
|
+
width: 100%;
|
|
7515
|
+
border-collapse: collapse;
|
|
7516
|
+
font-family: var(--mono, monospace);
|
|
7517
|
+
font-size: var(--db-font-mono);
|
|
7518
|
+
}
|
|
7519
|
+
.redis-value-hash-table th,
|
|
7520
|
+
.redis-value-hash-table td {
|
|
7521
|
+
text-align: left;
|
|
7522
|
+
padding: 4px 8px;
|
|
7523
|
+
border-bottom: 1px solid var(--border);
|
|
7524
|
+
vertical-align: top;
|
|
7525
|
+
}
|
|
7526
|
+
.redis-value-hash-table th {
|
|
7527
|
+
background: var(--bg-soft);
|
|
7528
|
+
font-weight: 600;
|
|
7529
|
+
}
|
|
7530
|
+
.redis-value-hash-field {
|
|
7531
|
+
width: 30%;
|
|
7532
|
+
word-break: break-all;
|
|
7533
|
+
color: var(--fg-muted);
|
|
7534
|
+
}
|
|
7535
|
+
.redis-value-hash-val {
|
|
7536
|
+
word-break: break-all;
|
|
7537
|
+
white-space: pre-wrap;
|
|
7538
|
+
}
|
|
7539
|
+
.redis-value-list {
|
|
7540
|
+
margin: 0;
|
|
7541
|
+
padding: 0 0 0 28px;
|
|
7542
|
+
font-family: var(--mono, monospace);
|
|
7543
|
+
font-size: var(--db-font-mono);
|
|
7544
|
+
}
|
|
7545
|
+
.redis-value-list li {
|
|
7546
|
+
padding: 2px 4px;
|
|
7547
|
+
border-bottom: 1px solid var(--border);
|
|
7548
|
+
word-break: break-all;
|
|
7549
|
+
white-space: pre-wrap;
|
|
7550
|
+
}
|
|
7551
|
+
.db-pane-note {
|
|
7552
|
+
padding: 8px 12px;
|
|
7553
|
+
color: var(--fg-muted);
|
|
7554
|
+
font-size: var(--db-font-sm);
|
|
7555
|
+
}
|
|
7556
|
+
.db-pane-error {
|
|
7557
|
+
padding: 8px 12px;
|
|
7558
|
+
color: var(--error, #c00);
|
|
7559
|
+
font-size: var(--db-font-sm);
|
|
7560
|
+
}
|
|
7561
|
+
|
|
7562
|
+
/* ---------- Elasticsearch explorer ---------- */
|
|
7563
|
+
.es-explorer {
|
|
7564
|
+
flex: 1;
|
|
7565
|
+
display: flex;
|
|
7566
|
+
flex-direction: row;
|
|
7567
|
+
overflow: hidden;
|
|
7568
|
+
background: var(--bg);
|
|
7569
|
+
font-size: var(--db-font-base);
|
|
7570
|
+
}
|
|
7571
|
+
.es-explorer[hidden] {
|
|
7572
|
+
display: none;
|
|
7573
|
+
}
|
|
7574
|
+
.es-index-list-pane {
|
|
7575
|
+
width: 260px;
|
|
7576
|
+
border-right: 1px solid var(--border);
|
|
7577
|
+
display: flex;
|
|
7578
|
+
flex-direction: column;
|
|
7579
|
+
overflow: hidden;
|
|
7580
|
+
background: var(--bg-soft);
|
|
7581
|
+
}
|
|
7582
|
+
.es-index-list {
|
|
7583
|
+
flex: 1;
|
|
7584
|
+
overflow-y: auto;
|
|
7585
|
+
padding: 4px 0;
|
|
7586
|
+
}
|
|
7587
|
+
.es-index-item {
|
|
7588
|
+
display: flex;
|
|
7589
|
+
flex-direction: column;
|
|
7590
|
+
padding: 6px 12px;
|
|
7591
|
+
cursor: pointer;
|
|
7592
|
+
border-left: 2px solid transparent;
|
|
7593
|
+
user-select: none;
|
|
7594
|
+
gap: 2px;
|
|
7595
|
+
}
|
|
7596
|
+
.es-index-item:hover {
|
|
7597
|
+
background: var(--bg-hover, var(--bg));
|
|
7598
|
+
}
|
|
7599
|
+
.es-index-item.active {
|
|
7600
|
+
background: var(--bg-active, var(--bg-soft));
|
|
7601
|
+
border-left-color: var(--accent);
|
|
7602
|
+
}
|
|
7603
|
+
.es-index-name {
|
|
7604
|
+
font-family: var(--mono, monospace);
|
|
7605
|
+
font-size: var(--db-font-mono);
|
|
7606
|
+
font-weight: 500;
|
|
7607
|
+
overflow: hidden;
|
|
7608
|
+
text-overflow: ellipsis;
|
|
7609
|
+
white-space: nowrap;
|
|
7610
|
+
}
|
|
7611
|
+
.es-index-meta {
|
|
7612
|
+
font-size: var(--db-font-sm);
|
|
7613
|
+
color: var(--fg-muted);
|
|
7614
|
+
}
|
|
7615
|
+
.es-doc-list-pane {
|
|
7616
|
+
width: 380px;
|
|
7617
|
+
border-right: 1px solid var(--border);
|
|
7618
|
+
display: flex;
|
|
7619
|
+
flex-direction: column;
|
|
7620
|
+
overflow: hidden;
|
|
7621
|
+
background: var(--bg);
|
|
7622
|
+
}
|
|
7623
|
+
.es-search-bar {
|
|
7624
|
+
display: flex;
|
|
7625
|
+
gap: 6px;
|
|
7626
|
+
padding: 8px 12px;
|
|
7627
|
+
border-bottom: 1px solid var(--border);
|
|
7628
|
+
background: var(--bg-soft);
|
|
7629
|
+
flex-shrink: 0;
|
|
7630
|
+
}
|
|
7631
|
+
.es-search-input {
|
|
7632
|
+
flex: 1;
|
|
7633
|
+
padding: 4px 8px;
|
|
7634
|
+
border: 1px solid var(--border);
|
|
7635
|
+
border-radius: 4px;
|
|
7636
|
+
background: var(--bg);
|
|
7637
|
+
color: var(--fg);
|
|
7638
|
+
font-family: var(--mono, monospace);
|
|
7639
|
+
font-size: var(--db-font-mono);
|
|
7640
|
+
}
|
|
7641
|
+
.es-search-btn {
|
|
7642
|
+
padding: 4px 10px;
|
|
7643
|
+
border: 1px solid var(--border);
|
|
7644
|
+
border-radius: 4px;
|
|
7645
|
+
background: var(--bg);
|
|
7646
|
+
color: var(--fg);
|
|
7647
|
+
cursor: pointer;
|
|
7648
|
+
font-size: var(--db-font-base);
|
|
7649
|
+
}
|
|
7650
|
+
.es-search-btn:hover {
|
|
7651
|
+
background: var(--bg-hover, var(--bg-soft));
|
|
7652
|
+
}
|
|
7653
|
+
.es-doc-list {
|
|
7654
|
+
flex: 1;
|
|
7655
|
+
overflow-y: auto;
|
|
7656
|
+
padding: 4px 0;
|
|
7657
|
+
}
|
|
7658
|
+
.es-doc-item {
|
|
7659
|
+
display: flex;
|
|
7660
|
+
flex-direction: column;
|
|
7661
|
+
padding: 4px 12px;
|
|
7662
|
+
cursor: pointer;
|
|
7663
|
+
border-left: 2px solid transparent;
|
|
7664
|
+
user-select: none;
|
|
7665
|
+
font-family: var(--mono, monospace);
|
|
7666
|
+
font-size: var(--db-font-mono);
|
|
7667
|
+
gap: 2px;
|
|
7668
|
+
border-bottom: 1px solid var(--border);
|
|
7669
|
+
}
|
|
7670
|
+
.es-doc-item:hover {
|
|
7671
|
+
background: var(--bg-hover, var(--bg-soft));
|
|
7672
|
+
}
|
|
7673
|
+
.es-doc-item.active {
|
|
7674
|
+
background: var(--bg-active, var(--bg-soft));
|
|
7675
|
+
border-left-color: var(--accent);
|
|
7676
|
+
}
|
|
7677
|
+
.es-doc-id {
|
|
7678
|
+
font-weight: 600;
|
|
7679
|
+
overflow: hidden;
|
|
7680
|
+
text-overflow: ellipsis;
|
|
7681
|
+
white-space: nowrap;
|
|
7682
|
+
}
|
|
7683
|
+
.es-doc-preview {
|
|
7684
|
+
color: var(--fg-muted);
|
|
7685
|
+
font-size: var(--db-font-sm);
|
|
7686
|
+
overflow: hidden;
|
|
7687
|
+
text-overflow: ellipsis;
|
|
7688
|
+
white-space: nowrap;
|
|
7689
|
+
}
|
|
7690
|
+
.es-doc-more-btn {
|
|
7691
|
+
padding: 6px;
|
|
7692
|
+
border: none;
|
|
7693
|
+
border-top: 1px solid var(--border);
|
|
7694
|
+
background: var(--bg-soft);
|
|
7695
|
+
cursor: pointer;
|
|
7696
|
+
font-size: var(--db-font-sm);
|
|
7697
|
+
color: var(--fg);
|
|
7698
|
+
}
|
|
7699
|
+
.es-doc-more-btn:hover {
|
|
7700
|
+
background: var(--bg-hover, var(--bg));
|
|
7701
|
+
}
|
|
7702
|
+
.es-doc-more-btn:disabled {
|
|
7703
|
+
cursor: default;
|
|
7704
|
+
color: var(--fg-muted);
|
|
7705
|
+
}
|
|
7706
|
+
.es-detail-pane {
|
|
7707
|
+
flex: 1;
|
|
7708
|
+
display: flex;
|
|
7709
|
+
flex-direction: column;
|
|
7710
|
+
overflow: hidden;
|
|
7711
|
+
background: var(--bg);
|
|
7712
|
+
}
|
|
7713
|
+
.es-detail-tabs {
|
|
7714
|
+
display: flex;
|
|
7715
|
+
border-bottom: 1px solid var(--border);
|
|
7716
|
+
background: var(--bg-soft);
|
|
7717
|
+
flex-shrink: 0;
|
|
7718
|
+
}
|
|
7719
|
+
.es-detail-tab {
|
|
7720
|
+
padding: 6px 14px;
|
|
7721
|
+
border: none;
|
|
7722
|
+
background: transparent;
|
|
7723
|
+
cursor: pointer;
|
|
7724
|
+
font-size: var(--db-font-base);
|
|
7725
|
+
color: var(--fg-muted);
|
|
7726
|
+
border-bottom: 2px solid transparent;
|
|
7727
|
+
}
|
|
7728
|
+
.es-detail-tab.active {
|
|
7729
|
+
color: var(--fg);
|
|
7730
|
+
border-bottom-color: var(--accent);
|
|
7731
|
+
}
|
|
7732
|
+
.es-mapping-body,
|
|
7733
|
+
.es-doc-body {
|
|
7734
|
+
flex: 1;
|
|
7735
|
+
overflow: auto;
|
|
7736
|
+
padding: 12px;
|
|
7737
|
+
color: var(--fg);
|
|
7738
|
+
}
|
|
7739
|
+
.es-mapping-header,
|
|
7740
|
+
.es-doc-detail-header {
|
|
7741
|
+
font-family: var(--mono, monospace);
|
|
7742
|
+
font-size: var(--db-font-mono);
|
|
7743
|
+
font-weight: 600;
|
|
7744
|
+
padding-bottom: 8px;
|
|
7745
|
+
border-bottom: 1px solid var(--border);
|
|
7746
|
+
margin-bottom: 8px;
|
|
7747
|
+
}
|
|
7748
|
+
.es-doc-detail-meta {
|
|
7749
|
+
font-family: var(--mono, monospace);
|
|
7750
|
+
font-size: var(--db-font-sm);
|
|
7751
|
+
color: var(--fg-muted);
|
|
7752
|
+
margin-bottom: 8px;
|
|
7753
|
+
}
|
|
7754
|
+
.es-mapping-table {
|
|
7755
|
+
width: 100%;
|
|
7756
|
+
border-collapse: collapse;
|
|
7757
|
+
font-family: var(--mono, monospace);
|
|
7758
|
+
font-size: var(--db-font-mono);
|
|
7759
|
+
}
|
|
7760
|
+
.es-mapping-table th,
|
|
7761
|
+
.es-mapping-table td {
|
|
7762
|
+
text-align: left;
|
|
7763
|
+
padding: 4px 8px;
|
|
7764
|
+
border-bottom: 1px solid var(--border);
|
|
7765
|
+
}
|
|
7766
|
+
.es-mapping-table th {
|
|
7767
|
+
font-weight: 600;
|
|
7768
|
+
background: var(--bg-soft);
|
|
7769
|
+
}
|
|
7770
|
+
.es-mapping-field {
|
|
7771
|
+
font-weight: 500;
|
|
7772
|
+
}
|
|
7773
|
+
.es-mapping-type {
|
|
7774
|
+
color: var(--fg-muted);
|
|
7775
|
+
}
|
|
7776
|
+
.es-doc-source {
|
|
7777
|
+
font-family: var(--mono, monospace);
|
|
7778
|
+
font-size: var(--db-font-mono);
|
|
7779
|
+
white-space: pre-wrap;
|
|
7780
|
+
word-break: break-all;
|
|
7781
|
+
margin: 0;
|
|
7782
|
+
}
|
|
7783
|
+
.es-value-empty {
|
|
7784
|
+
color: var(--fg-muted);
|
|
7785
|
+
font-size: var(--db-font-base);
|
|
7786
|
+
font-style: italic;
|
|
7787
|
+
text-align: center;
|
|
7788
|
+
padding: 8px;
|
|
7789
|
+
}
|
|
7790
|
+
/* ---------- Database multi-tab manager ---------- */
|
|
7791
|
+
.db-root {
|
|
7792
|
+
display: flex;
|
|
7793
|
+
flex-direction: column;
|
|
7794
|
+
/* `#content` 由来の高さが viewport いっぱいにならない環境があり、
|
|
7795
|
+
`height: 100%` だと `.db-tab-host` が縮んで内側の history pane / main
|
|
7796
|
+
content が画面途中で切れる。Round 5 前の `.db-container` と同様、
|
|
7797
|
+
ここで viewport 基準の高さを明示する。 */
|
|
7798
|
+
height: calc(100vh - var(--global-header-h));
|
|
7799
|
+
width: 100%;
|
|
7800
|
+
overflow: hidden;
|
|
7801
|
+
font-size: var(--db-font-base);
|
|
7802
|
+
}
|
|
7803
|
+
.db-tabs-bar {
|
|
7804
|
+
display: flex;
|
|
7805
|
+
flex-direction: row;
|
|
7806
|
+
align-items: stretch;
|
|
7807
|
+
background: var(--bg-soft);
|
|
7808
|
+
border-bottom: 1px solid var(--border);
|
|
7809
|
+
min-height: 32px;
|
|
7810
|
+
flex-shrink: 0;
|
|
7811
|
+
overflow: hidden;
|
|
7812
|
+
}
|
|
7813
|
+
.db-tabs-list {
|
|
7814
|
+
display: flex;
|
|
7815
|
+
flex-direction: row;
|
|
7816
|
+
flex: 1;
|
|
7817
|
+
overflow-x: auto;
|
|
7818
|
+
overflow-y: hidden;
|
|
7819
|
+
gap: 1px;
|
|
7820
|
+
}
|
|
7821
|
+
.db-tabs-chip {
|
|
7822
|
+
display: inline-flex;
|
|
7823
|
+
align-items: center;
|
|
7824
|
+
gap: 6px;
|
|
7825
|
+
padding: 4px 6px 4px 12px;
|
|
7826
|
+
border-right: 1px solid var(--border);
|
|
7827
|
+
background: var(--bg-soft);
|
|
7828
|
+
color: var(--fg-muted);
|
|
7829
|
+
cursor: pointer;
|
|
7830
|
+
user-select: none;
|
|
7831
|
+
font-size: var(--db-font-base);
|
|
7832
|
+
max-width: 240px;
|
|
7833
|
+
min-width: 80px;
|
|
7834
|
+
flex-shrink: 0;
|
|
7835
|
+
}
|
|
7836
|
+
.db-tabs-chip:hover {
|
|
7837
|
+
background: var(--bg-hover, var(--bg));
|
|
7838
|
+
color: var(--fg);
|
|
7839
|
+
}
|
|
7840
|
+
.db-tabs-chip.active {
|
|
7841
|
+
background: var(--bg);
|
|
7842
|
+
color: var(--fg);
|
|
7843
|
+
border-bottom: 2px solid var(--accent);
|
|
7844
|
+
font-weight: 500;
|
|
7845
|
+
margin-bottom: -1px;
|
|
7846
|
+
}
|
|
7847
|
+
.db-tabs-chip.dragging {
|
|
7848
|
+
opacity: 0.55;
|
|
7849
|
+
}
|
|
7850
|
+
.db-tabs-chip.drop-target {
|
|
7851
|
+
background: var(--accent-subtle);
|
|
7852
|
+
box-shadow: inset 2px 0 0 var(--accent);
|
|
7853
|
+
}
|
|
7854
|
+
.db-tabs-chip.drop-target.drop-after {
|
|
7855
|
+
box-shadow: inset -2px 0 0 var(--accent);
|
|
7856
|
+
}
|
|
7857
|
+
.db-tabs-chip:focus-visible,
|
|
7858
|
+
.db-tabs-new-btn:focus-visible,
|
|
7859
|
+
.db-tabs-chip-close:focus-visible {
|
|
7860
|
+
outline: 2px solid var(--accent);
|
|
7861
|
+
outline-offset: -2px;
|
|
7862
|
+
}
|
|
7863
|
+
.db-tabs-chip-label {
|
|
7864
|
+
flex: 1;
|
|
7865
|
+
overflow: hidden;
|
|
7866
|
+
text-overflow: ellipsis;
|
|
7867
|
+
white-space: nowrap;
|
|
7868
|
+
}
|
|
7869
|
+
.db-tabs-chip-close {
|
|
7870
|
+
display: inline-flex;
|
|
7871
|
+
align-items: center;
|
|
7872
|
+
justify-content: center;
|
|
7873
|
+
min-width: 24px;
|
|
7874
|
+
min-height: 24px;
|
|
7875
|
+
padding: 0;
|
|
7876
|
+
margin: 0;
|
|
7877
|
+
border: none;
|
|
7878
|
+
background: transparent;
|
|
7879
|
+
color: var(--fg-muted);
|
|
7880
|
+
border-radius: 3px;
|
|
7881
|
+
cursor: pointer;
|
|
7882
|
+
font-size: var(--db-font-md);
|
|
7883
|
+
line-height: 1;
|
|
7884
|
+
}
|
|
7885
|
+
.db-tabs-chip-close:hover {
|
|
7886
|
+
background: var(--bg-hover, var(--border));
|
|
7887
|
+
color: var(--fg);
|
|
7888
|
+
}
|
|
7889
|
+
.db-tabs-new-btn {
|
|
7890
|
+
border: none;
|
|
7891
|
+
border-left: 1px solid var(--border);
|
|
7892
|
+
background: var(--bg-soft);
|
|
7893
|
+
cursor: pointer;
|
|
7894
|
+
padding: 0 12px;
|
|
7895
|
+
font-size: var(--db-font-md);
|
|
7896
|
+
color: var(--fg-muted);
|
|
7897
|
+
min-width: 36px;
|
|
7898
|
+
}
|
|
7899
|
+
.db-tabs-new-btn:hover {
|
|
7900
|
+
background: var(--bg-hover, var(--bg));
|
|
7901
|
+
color: var(--fg);
|
|
7902
|
+
}
|
|
7903
|
+
.db-tab-host {
|
|
7904
|
+
flex: 1;
|
|
7905
|
+
display: flex;
|
|
7906
|
+
position: relative;
|
|
7907
|
+
overflow: hidden;
|
|
7908
|
+
min-height: 0;
|
|
7909
|
+
}
|
|
7910
|
+
.db-tab-host > .db-container {
|
|
7911
|
+
flex: 1;
|
|
7912
|
+
}
|
|
7913
|
+
.db-tab-host > .db-container[hidden] {
|
|
7914
|
+
display: none;
|
|
7915
|
+
}
|
|
7916
|
+
|