@youtyan/code-viewer 0.1.50 → 0.1.52
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/code-viewer.js +3007 -271
- package/package.json +1 -1
- package/skills/code-viewer-query/SKILL.md +59 -0
- package/web/app.js +3864 -207
- package/web/index.html +21 -0
- package/web/style.css +2111 -42
package/web/style.css
CHANGED
|
@@ -172,7 +172,7 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
172
172
|
padding: 6px 16px;
|
|
173
173
|
color: var(--fg-muted);
|
|
174
174
|
font-size: 12px;
|
|
175
|
-
border-bottom: 1px solid var(--border
|
|
175
|
+
border-bottom: 1px solid var(--border);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
.gdp-palette-controls {
|
|
@@ -312,7 +312,7 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
312
312
|
height: 100%;
|
|
313
313
|
margin-left: 0;
|
|
314
314
|
padding-left: 18px;
|
|
315
|
-
border-left: 1px solid var(--border
|
|
315
|
+
border-left: 1px solid var(--border);
|
|
316
316
|
flex-shrink: 0;
|
|
317
317
|
}
|
|
318
318
|
.global-help-link {
|
|
@@ -409,6 +409,17 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
409
409
|
outline: 2px solid var(--accent);
|
|
410
410
|
outline-offset: 1px;
|
|
411
411
|
}
|
|
412
|
+
#auto-update {
|
|
413
|
+
width: auto;
|
|
414
|
+
padding: 0 8px;
|
|
415
|
+
font-size: 11px;
|
|
416
|
+
font-weight: 600;
|
|
417
|
+
}
|
|
418
|
+
#auto-update.active {
|
|
419
|
+
background: var(--success-subtle);
|
|
420
|
+
border-color: var(--success);
|
|
421
|
+
color: var(--success);
|
|
422
|
+
}
|
|
412
423
|
|
|
413
424
|
#meta {
|
|
414
425
|
display: flex; align-items: center; gap: 10px;
|
|
@@ -440,7 +451,7 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
440
451
|
gap: 4px;
|
|
441
452
|
color: var(--fg-muted);
|
|
442
453
|
background: var(--bg-soft);
|
|
443
|
-
border: 1px solid var(--border
|
|
454
|
+
border: 1px solid var(--border);
|
|
444
455
|
border-radius: 999px;
|
|
445
456
|
padding: 3px 8px;
|
|
446
457
|
font-size: 11px;
|
|
@@ -901,6 +912,74 @@ body[data-code-font-size="xlarge"] { --code-font-size: 15px; }
|
|
|
901
912
|
100% { transform: translateX(450%); }
|
|
902
913
|
}
|
|
903
914
|
|
|
915
|
+
/* ===== Change notification banner ===== */
|
|
916
|
+
#change-banner {
|
|
917
|
+
position: fixed;
|
|
918
|
+
right: 16px;
|
|
919
|
+
bottom: 16px;
|
|
920
|
+
z-index: 80;
|
|
921
|
+
display: flex;
|
|
922
|
+
align-items: center;
|
|
923
|
+
gap: 10px;
|
|
924
|
+
width: max-content;
|
|
925
|
+
max-width: min(380px, calc(100vw - 32px));
|
|
926
|
+
padding: 10px 12px;
|
|
927
|
+
background: var(--accent-subtle);
|
|
928
|
+
border: 1px solid var(--accent-muted);
|
|
929
|
+
border-radius: 6px;
|
|
930
|
+
box-shadow: 0 8px 24px rgba(0,0,0,0.16);
|
|
931
|
+
font-size: 13px;
|
|
932
|
+
color: var(--fg);
|
|
933
|
+
animation: gdp-banner-slide 0.2s ease;
|
|
934
|
+
}
|
|
935
|
+
#change-banner[hidden] { display: none; }
|
|
936
|
+
@keyframes gdp-banner-slide {
|
|
937
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
938
|
+
to { opacity: 1; transform: translateY(0); }
|
|
939
|
+
}
|
|
940
|
+
#change-banner-copy {
|
|
941
|
+
display: grid;
|
|
942
|
+
gap: 2px;
|
|
943
|
+
min-width: 0;
|
|
944
|
+
}
|
|
945
|
+
#change-banner-text {
|
|
946
|
+
overflow: hidden;
|
|
947
|
+
text-overflow: ellipsis;
|
|
948
|
+
white-space: nowrap;
|
|
949
|
+
font-weight: 600;
|
|
950
|
+
}
|
|
951
|
+
#change-banner-age {
|
|
952
|
+
color: var(--fg-muted);
|
|
953
|
+
font-size: 12px;
|
|
954
|
+
white-space: nowrap;
|
|
955
|
+
}
|
|
956
|
+
#change-banner-reload {
|
|
957
|
+
flex: 0 0 auto;
|
|
958
|
+
min-height: 30px;
|
|
959
|
+
padding: 3px 10px;
|
|
960
|
+
border: 1px solid var(--accent);
|
|
961
|
+
border-radius: 4px;
|
|
962
|
+
background: var(--accent);
|
|
963
|
+
color: var(--fg-onemphasis);
|
|
964
|
+
font-size: 12px;
|
|
965
|
+
cursor: pointer;
|
|
966
|
+
white-space: nowrap;
|
|
967
|
+
}
|
|
968
|
+
#change-banner-reload:hover { background: var(--accent-emph); }
|
|
969
|
+
#change-banner-dismiss {
|
|
970
|
+
flex: 0 0 auto;
|
|
971
|
+
width: 30px;
|
|
972
|
+
height: 30px;
|
|
973
|
+
padding: 0;
|
|
974
|
+
border: none;
|
|
975
|
+
background: none;
|
|
976
|
+
color: var(--fg-muted);
|
|
977
|
+
font-size: 16px;
|
|
978
|
+
cursor: pointer;
|
|
979
|
+
line-height: 1;
|
|
980
|
+
}
|
|
981
|
+
#change-banner-dismiss:hover { color: var(--fg); }
|
|
982
|
+
|
|
904
983
|
/* ===== Commit history panel ===== */
|
|
905
984
|
#history-panel {
|
|
906
985
|
display: none;
|
|
@@ -990,7 +1069,7 @@ body.gdp-history-page #topbar .ref-pickers {
|
|
|
990
1069
|
width: 100%;
|
|
991
1070
|
height: 32px;
|
|
992
1071
|
background: color-mix(in srgb, var(--bg) 78%, var(--bg-soft));
|
|
993
|
-
border: 1px solid var(--border
|
|
1072
|
+
border: 1px solid var(--border);
|
|
994
1073
|
color: var(--fg);
|
|
995
1074
|
border-radius: 8px;
|
|
996
1075
|
font: inherit;
|
|
@@ -1241,7 +1320,7 @@ body[data-focus-scope="main"] #content {
|
|
|
1241
1320
|
gap: 4px;
|
|
1242
1321
|
margin-left: 8px;
|
|
1243
1322
|
padding: 3px;
|
|
1244
|
-
border: 1px solid var(--border
|
|
1323
|
+
border: 1px solid var(--border);
|
|
1245
1324
|
border-radius: 8px;
|
|
1246
1325
|
background: color-mix(in srgb, var(--bg) 72%, transparent);
|
|
1247
1326
|
}
|
|
@@ -1285,7 +1364,7 @@ body[data-focus-scope="main"] #content {
|
|
|
1285
1364
|
top: var(--sidebar-head-h);
|
|
1286
1365
|
background: var(--bg-soft);
|
|
1287
1366
|
padding: 7px 12px 9px;
|
|
1288
|
-
border-bottom: 1px solid var(--border
|
|
1367
|
+
border-bottom: 1px solid var(--border);
|
|
1289
1368
|
z-index: 2;
|
|
1290
1369
|
}
|
|
1291
1370
|
.sb-filter-wrap::before {
|
|
@@ -1317,7 +1396,7 @@ body[data-focus-scope="main"] #content {
|
|
|
1317
1396
|
width: 100%;
|
|
1318
1397
|
height: 32px;
|
|
1319
1398
|
background: color-mix(in srgb, var(--bg) 78%, var(--bg-soft));
|
|
1320
|
-
border: 1px solid var(--border
|
|
1399
|
+
border: 1px solid var(--border);
|
|
1321
1400
|
color: var(--fg);
|
|
1322
1401
|
border-radius: 8px;
|
|
1323
1402
|
font: inherit;
|
|
@@ -1472,7 +1551,7 @@ body.gdp-resizing * { user-select: none !important; }
|
|
|
1472
1551
|
width: 100%;
|
|
1473
1552
|
min-height: 110px;
|
|
1474
1553
|
resize: vertical;
|
|
1475
|
-
border: 1px solid var(--border
|
|
1554
|
+
border: 1px solid var(--border);
|
|
1476
1555
|
border-radius: 6px;
|
|
1477
1556
|
background: var(--bg-soft);
|
|
1478
1557
|
color: var(--fg);
|
|
@@ -1485,8 +1564,9 @@ body.gdp-resizing * { user-select: none !important; }
|
|
|
1485
1564
|
font-size: 11px;
|
|
1486
1565
|
line-height: 15px;
|
|
1487
1566
|
}
|
|
1488
|
-
#display-settings-source
|
|
1489
|
-
|
|
1567
|
+
#display-settings-source,
|
|
1568
|
+
.scope-settings-help {
|
|
1569
|
+
margin: 4px 0 0;
|
|
1490
1570
|
color: var(--fg-subtle);
|
|
1491
1571
|
font-size: 11px;
|
|
1492
1572
|
line-height: 15px;
|
|
@@ -1498,7 +1578,7 @@ body.gdp-resizing * { user-select: none !important; }
|
|
|
1498
1578
|
margin-top: 10px;
|
|
1499
1579
|
}
|
|
1500
1580
|
.scope-settings-actions button {
|
|
1501
|
-
border: 1px solid var(--border
|
|
1581
|
+
border: 1px solid var(--border);
|
|
1502
1582
|
border-radius: 6px;
|
|
1503
1583
|
background: var(--bg-soft);
|
|
1504
1584
|
color: var(--fg);
|
|
@@ -1572,7 +1652,7 @@ body.gdp-help-page #content {
|
|
|
1572
1652
|
display: grid;
|
|
1573
1653
|
gap: 4px;
|
|
1574
1654
|
padding-right: 16px;
|
|
1575
|
-
border-right: 1px solid var(--border
|
|
1655
|
+
border-right: 1px solid var(--border);
|
|
1576
1656
|
}
|
|
1577
1657
|
.gdp-help-nav button {
|
|
1578
1658
|
appearance: none;
|
|
@@ -1640,7 +1720,7 @@ body.gdp-help-page #content {
|
|
|
1640
1720
|
.gdp-help-command pre {
|
|
1641
1721
|
margin: 0;
|
|
1642
1722
|
overflow-x: auto;
|
|
1643
|
-
border: 1px solid var(--border
|
|
1723
|
+
border: 1px solid var(--border);
|
|
1644
1724
|
border-radius: 8px;
|
|
1645
1725
|
background: var(--bg-soft);
|
|
1646
1726
|
padding: 12px 14px;
|
|
@@ -1653,12 +1733,12 @@ body.gdp-help-page #content {
|
|
|
1653
1733
|
.gdp-help-group table {
|
|
1654
1734
|
width: 100%;
|
|
1655
1735
|
border-collapse: collapse;
|
|
1656
|
-
border-top: 1px solid var(--border
|
|
1736
|
+
border-top: 1px solid var(--border);
|
|
1657
1737
|
}
|
|
1658
1738
|
.gdp-help-group th,
|
|
1659
1739
|
.gdp-help-group td {
|
|
1660
1740
|
padding: 11px 8px;
|
|
1661
|
-
border-bottom: 1px solid var(--border
|
|
1741
|
+
border-bottom: 1px solid var(--border);
|
|
1662
1742
|
vertical-align: top;
|
|
1663
1743
|
}
|
|
1664
1744
|
.gdp-help-group th {
|
|
@@ -1773,7 +1853,7 @@ body.gdp-help-page #content {
|
|
|
1773
1853
|
max-width: 62px;
|
|
1774
1854
|
overflow: hidden;
|
|
1775
1855
|
text-overflow: ellipsis;
|
|
1776
|
-
border: 1px solid var(--border
|
|
1856
|
+
border: 1px solid var(--border);
|
|
1777
1857
|
border-radius: 999px;
|
|
1778
1858
|
padding: 0 5px;
|
|
1779
1859
|
color: var(--fg-subtle);
|
|
@@ -1783,12 +1863,12 @@ body.gdp-help-page #content {
|
|
|
1783
1863
|
}
|
|
1784
1864
|
#filelist.tree .tree-dir .dir-omitted-heavy {
|
|
1785
1865
|
color: var(--fg-subtle);
|
|
1786
|
-
border-color: var(--border
|
|
1866
|
+
border-color: var(--border);
|
|
1787
1867
|
background: var(--bg-soft);
|
|
1788
1868
|
}
|
|
1789
1869
|
#filelist.tree .tree-dir .dir-omitted-internal {
|
|
1790
1870
|
color: var(--fg-subtle);
|
|
1791
|
-
border-color: var(--border
|
|
1871
|
+
border-color: var(--border);
|
|
1792
1872
|
background: var(--bg-soft);
|
|
1793
1873
|
}
|
|
1794
1874
|
#filelist.tree .tree-dir .dir-icon {
|
|
@@ -1842,7 +1922,7 @@ body.gdp-help-page #content {
|
|
|
1842
1922
|
height: 16px;
|
|
1843
1923
|
border-radius: 999px;
|
|
1844
1924
|
color: var(--success);
|
|
1845
|
-
background: var(--success
|
|
1925
|
+
background: color-mix(in srgb, var(--success) 15%, var(--bg));
|
|
1846
1926
|
font-size: 11px;
|
|
1847
1927
|
font-weight: 700;
|
|
1848
1928
|
line-height: 1;
|
|
@@ -2230,7 +2310,7 @@ table.d2h-diff-table tr.gdp-diff-line-target .d2h-code-line-ctn {
|
|
|
2230
2310
|
background-color: var(--line-hit-bg) !important;
|
|
2231
2311
|
}
|
|
2232
2312
|
table.d2h-diff-table tr.gdp-diff-line-target > td:first-child {
|
|
2233
|
-
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border
|
|
2313
|
+
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border);
|
|
2234
2314
|
}
|
|
2235
2315
|
|
|
2236
2316
|
/* After-side drag selection (diff screen) — same yellow as the file view. */
|
|
@@ -2242,7 +2322,7 @@ table.d2h-diff-table tr.gdp-diff-line-selected .d2h-code-line-ctn {
|
|
|
2242
2322
|
background-color: var(--line-hit-bg) !important;
|
|
2243
2323
|
}
|
|
2244
2324
|
table.d2h-diff-table tr.gdp-diff-line-selected > td:first-child {
|
|
2245
|
-
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border
|
|
2325
|
+
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border);
|
|
2246
2326
|
}
|
|
2247
2327
|
table.d2h-diff-table td.d2h-code-linenumber,
|
|
2248
2328
|
table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
@@ -2546,6 +2626,11 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2546
2626
|
.gdp-source-viewer.media {
|
|
2547
2627
|
padding: 16px;
|
|
2548
2628
|
}
|
|
2629
|
+
.gdp-source-viewer.media.pdf {
|
|
2630
|
+
display: flex;
|
|
2631
|
+
flex-direction: column;
|
|
2632
|
+
overflow: hidden;
|
|
2633
|
+
}
|
|
2549
2634
|
.gdp-source-file-info {
|
|
2550
2635
|
display: flex;
|
|
2551
2636
|
flex-wrap: wrap;
|
|
@@ -2556,7 +2641,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2556
2641
|
}
|
|
2557
2642
|
.gdp-source-file-info span {
|
|
2558
2643
|
padding: 2px 7px;
|
|
2559
|
-
border: 1px solid var(--border
|
|
2644
|
+
border: 1px solid var(--border);
|
|
2560
2645
|
border-radius: 999px;
|
|
2561
2646
|
background: var(--bg-soft);
|
|
2562
2647
|
}
|
|
@@ -2579,9 +2664,14 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2579
2664
|
border: 0;
|
|
2580
2665
|
background: var(--bg);
|
|
2581
2666
|
}
|
|
2667
|
+
.gdp-source-viewer.media.pdf iframe {
|
|
2668
|
+
flex: 1 1 auto;
|
|
2669
|
+
height: max(520px, calc(100vh - var(--global-header-h) - 164px));
|
|
2670
|
+
min-height: 0;
|
|
2671
|
+
}
|
|
2582
2672
|
.gdp-source-meta {
|
|
2583
2673
|
padding: 8px 12px;
|
|
2584
|
-
border-bottom: 1px solid var(--border
|
|
2674
|
+
border-bottom: 1px solid var(--border);
|
|
2585
2675
|
background: var(--bg-soft);
|
|
2586
2676
|
color: var(--fg-muted);
|
|
2587
2677
|
font-size: 12px;
|
|
@@ -2596,7 +2686,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2596
2686
|
gap: 4px;
|
|
2597
2687
|
padding: 8px 12px 0;
|
|
2598
2688
|
background: var(--bg);
|
|
2599
|
-
border-bottom: 1px solid var(--border
|
|
2689
|
+
border-bottom: 1px solid var(--border);
|
|
2600
2690
|
}
|
|
2601
2691
|
.gdp-source-tabs button {
|
|
2602
2692
|
appearance: none;
|
|
@@ -2653,7 +2743,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2653
2743
|
.gdp-source-table tr.gdp-source-cursor .gdp-source-line-number,
|
|
2654
2744
|
.gdp-source-virtual-row.gdp-source-cursor .gdp-source-virtual-line-number {
|
|
2655
2745
|
color: var(--fg);
|
|
2656
|
-
box-shadow: inset 3px 0 0 var(--scope-accent), inset -1px 0 0 var(--border
|
|
2746
|
+
box-shadow: inset 3px 0 0 var(--scope-accent), inset -1px 0 0 var(--border);
|
|
2657
2747
|
}
|
|
2658
2748
|
.gdp-source-table tr.gdp-source-cursor .gdp-source-line-code,
|
|
2659
2749
|
.gdp-source-virtual-row.gdp-source-cursor .gdp-source-virtual-line-code {
|
|
@@ -2682,7 +2772,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2682
2772
|
}
|
|
2683
2773
|
.gdp-source-table tr.gdp-source-line-target .gdp-source-line-number,
|
|
2684
2774
|
.gdp-source-virtual-row.gdp-source-line-target .gdp-source-virtual-line-number {
|
|
2685
|
-
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border
|
|
2775
|
+
box-shadow: inset 3px 0 0 var(--line-hit-border), inset -1px 0 0 var(--border);
|
|
2686
2776
|
}
|
|
2687
2777
|
.gdp-source-line-target .gdp-source-line-code,
|
|
2688
2778
|
.gdp-source-line-target .gdp-source-virtual-line-code {
|
|
@@ -2744,7 +2834,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2744
2834
|
text-align: right;
|
|
2745
2835
|
color: var(--fg-muted);
|
|
2746
2836
|
background: var(--bg);
|
|
2747
|
-
box-shadow: inset -1px 0 0 var(--border
|
|
2837
|
+
box-shadow: inset -1px 0 0 var(--border);
|
|
2748
2838
|
font-variant-numeric: tabular-nums;
|
|
2749
2839
|
user-select: none;
|
|
2750
2840
|
white-space: nowrap;
|
|
@@ -2783,7 +2873,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2783
2873
|
gap: 8px;
|
|
2784
2874
|
min-width: 0;
|
|
2785
2875
|
padding: 8px 12px;
|
|
2786
|
-
border-bottom: 1px solid var(--border
|
|
2876
|
+
border-bottom: 1px solid var(--border);
|
|
2787
2877
|
color: var(--fg-muted);
|
|
2788
2878
|
background: var(--bg-soft);
|
|
2789
2879
|
font-size: 12px;
|
|
@@ -2897,7 +2987,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2897
2987
|
text-align: right;
|
|
2898
2988
|
color: var(--fg-muted);
|
|
2899
2989
|
background: var(--bg);
|
|
2900
|
-
box-shadow: inset -1px 0 0 var(--border
|
|
2990
|
+
box-shadow: inset -1px 0 0 var(--border);
|
|
2901
2991
|
font-variant-numeric: tabular-nums;
|
|
2902
2992
|
cursor: pointer;
|
|
2903
2993
|
user-select: none;
|
|
@@ -2940,7 +3030,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
2940
3030
|
top: var(--global-header-h);
|
|
2941
3031
|
z-index: 35;
|
|
2942
3032
|
background: var(--bg);
|
|
2943
|
-
border-bottom: 1px solid var(--border
|
|
3033
|
+
border-bottom: 1px solid var(--border);
|
|
2944
3034
|
}
|
|
2945
3035
|
.gdp-file-detail-header {
|
|
2946
3036
|
display: flex;
|
|
@@ -3042,7 +3132,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
3042
3132
|
align-items: baseline;
|
|
3043
3133
|
gap: 6px;
|
|
3044
3134
|
padding: 0 10px;
|
|
3045
|
-
border-right: 1px solid var(--border
|
|
3135
|
+
border-right: 1px solid var(--border);
|
|
3046
3136
|
white-space: nowrap;
|
|
3047
3137
|
}
|
|
3048
3138
|
.gdp-file-detail-meta-item:first-child {
|
|
@@ -3094,7 +3184,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
3094
3184
|
max-height: calc(100vh - var(--global-header-h) - 40px);
|
|
3095
3185
|
overflow: auto;
|
|
3096
3186
|
padding: 8px 12px 10px 0;
|
|
3097
|
-
border-right: 1px solid var(--border
|
|
3187
|
+
border-right: 1px solid var(--border);
|
|
3098
3188
|
background: transparent;
|
|
3099
3189
|
font-size: 13px;
|
|
3100
3190
|
line-height: 1.45;
|
|
@@ -3114,7 +3204,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
3114
3204
|
display: block;
|
|
3115
3205
|
margin: 0 0 10px 2px;
|
|
3116
3206
|
padding: 0 8px 10px;
|
|
3117
|
-
border-bottom: 1px solid var(--border
|
|
3207
|
+
border-bottom: 1px solid var(--border);
|
|
3118
3208
|
color: var(--fg-muted);
|
|
3119
3209
|
font-size: 11px;
|
|
3120
3210
|
font-weight: 600;
|
|
@@ -3182,7 +3272,7 @@ table.d2h-diff-table td.d2h-code-side-linenumber {
|
|
|
3182
3272
|
.gdp-markdown-preview h1,
|
|
3183
3273
|
.gdp-markdown-preview h2 {
|
|
3184
3274
|
padding-bottom: 0.3em;
|
|
3185
|
-
border-bottom: 1px solid var(--border
|
|
3275
|
+
border-bottom: 1px solid var(--border);
|
|
3186
3276
|
}
|
|
3187
3277
|
.gdp-markdown-preview h1 {
|
|
3188
3278
|
margin: 0 0 16px;
|
|
@@ -3621,8 +3711,8 @@ body.gdp-file-detail-page #empty {
|
|
|
3621
3711
|
align-items: center;
|
|
3622
3712
|
min-height: 34px;
|
|
3623
3713
|
padding: 0 14px;
|
|
3624
|
-
border-top: 1px solid var(--border
|
|
3625
|
-
border-bottom: 1px solid var(--border
|
|
3714
|
+
border-top: 1px solid var(--border);
|
|
3715
|
+
border-bottom: 1px solid var(--border);
|
|
3626
3716
|
background: var(--bg-soft);
|
|
3627
3717
|
}
|
|
3628
3718
|
.gdp-repo-sort-spacer {
|
|
@@ -3657,7 +3747,7 @@ body.gdp-file-detail-page #empty {
|
|
|
3657
3747
|
width: 100%;
|
|
3658
3748
|
min-height: 42px;
|
|
3659
3749
|
border: 0;
|
|
3660
|
-
border-bottom: 1px solid var(--border
|
|
3750
|
+
border-bottom: 1px solid var(--border);
|
|
3661
3751
|
background: var(--bg);
|
|
3662
3752
|
color: var(--fg);
|
|
3663
3753
|
padding: 0 14px;
|
|
@@ -3803,7 +3893,7 @@ body.gdp-file-detail-page #empty {
|
|
|
3803
3893
|
justify-content: flex-end;
|
|
3804
3894
|
gap: 8px;
|
|
3805
3895
|
padding: 12px 16px;
|
|
3806
|
-
border-top: 1px solid var(--border
|
|
3896
|
+
border-top: 1px solid var(--border);
|
|
3807
3897
|
}
|
|
3808
3898
|
.gdp-trash-dialog-danger {
|
|
3809
3899
|
border-color: var(--danger);
|
|
@@ -3994,7 +4084,7 @@ body.gdp-file-detail-page #empty {
|
|
|
3994
4084
|
background: var(--bg) !important;
|
|
3995
4085
|
color: var(--fg-muted) !important;
|
|
3996
4086
|
border-right: 0 !important;
|
|
3997
|
-
box-shadow: inset -1px 0 0 var(--border
|
|
4087
|
+
box-shadow: inset -1px 0 0 var(--border);
|
|
3998
4088
|
font-size: var(--code-font-size) !important;
|
|
3999
4089
|
font-variant-numeric: tabular-nums;
|
|
4000
4090
|
user-select: none;
|
|
@@ -4003,7 +4093,7 @@ body.gdp-file-detail-page #empty {
|
|
|
4003
4093
|
background: var(--bg) !important;
|
|
4004
4094
|
color: var(--fg-muted) !important;
|
|
4005
4095
|
border-right: 0 !important;
|
|
4006
|
-
box-shadow: inset -1px 0 0 var(--border
|
|
4096
|
+
box-shadow: inset -1px 0 0 var(--border);
|
|
4007
4097
|
font-size: var(--code-font-size) !important;
|
|
4008
4098
|
font-variant-numeric: tabular-nums;
|
|
4009
4099
|
}
|
|
@@ -4083,12 +4173,12 @@ body.gdp-file-detail-page #empty {
|
|
|
4083
4173
|
.d2h-emptyplaceholder,
|
|
4084
4174
|
.d2h-code-side-emptyplaceholder {
|
|
4085
4175
|
background: var(--bg-soft) !important;
|
|
4086
|
-
border-color: var(--border
|
|
4176
|
+
border-color: var(--border) !important;
|
|
4087
4177
|
}
|
|
4088
4178
|
.d2h-code-side-emptyplaceholder { color: var(--fg-subtle) !important; }
|
|
4089
4179
|
|
|
4090
4180
|
/* Side-by-side divider */
|
|
4091
|
-
.d2h-file-side-diff > div { border-color: var(--border
|
|
4181
|
+
.d2h-file-side-diff > div { border-color: var(--border) !important; }
|
|
4092
4182
|
.d2h-files-diff > div { background: var(--bg) !important; }
|
|
4093
4183
|
|
|
4094
4184
|
/* Prefix coloring (use diff2html's default layout) */
|
|
@@ -4444,6 +4534,174 @@ body.gdp-help-page #annotation-panel {
|
|
|
4444
4534
|
body.annotation-panel-open #content {
|
|
4445
4535
|
margin-right: min(380px, calc(100vw - 32px));
|
|
4446
4536
|
}
|
|
4537
|
+
|
|
4538
|
+
/* ---- Query History right-panel ---- */
|
|
4539
|
+
#query-history-panel {
|
|
4540
|
+
position: fixed;
|
|
4541
|
+
left: 0;
|
|
4542
|
+
right: 0;
|
|
4543
|
+
bottom: 0;
|
|
4544
|
+
height: min(45vh, 400px);
|
|
4545
|
+
z-index: 45;
|
|
4546
|
+
display: flex;
|
|
4547
|
+
flex-direction: column;
|
|
4548
|
+
border-top: 1px solid var(--border);
|
|
4549
|
+
background: var(--bg);
|
|
4550
|
+
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
|
|
4551
|
+
}
|
|
4552
|
+
#query-history-panel[hidden] {
|
|
4553
|
+
display: none !important;
|
|
4554
|
+
}
|
|
4555
|
+
body.query-history-panel-open #content {
|
|
4556
|
+
margin-right: 0;
|
|
4557
|
+
padding-bottom: min(45vh, 400px);
|
|
4558
|
+
}
|
|
4559
|
+
.query-history-panel-head {
|
|
4560
|
+
display: flex;
|
|
4561
|
+
align-items: center;
|
|
4562
|
+
gap: 8px;
|
|
4563
|
+
padding: 10px 12px;
|
|
4564
|
+
border-bottom: 1px solid var(--border);
|
|
4565
|
+
}
|
|
4566
|
+
.query-history-panel-head strong {
|
|
4567
|
+
flex: 1;
|
|
4568
|
+
}
|
|
4569
|
+
#query-history-content {
|
|
4570
|
+
flex: 1;
|
|
4571
|
+
overflow-y: auto;
|
|
4572
|
+
}
|
|
4573
|
+
.db-query-history {
|
|
4574
|
+
height: 100%;
|
|
4575
|
+
display: flex;
|
|
4576
|
+
flex-direction: column;
|
|
4577
|
+
}
|
|
4578
|
+
.db-query-history-toolbar {
|
|
4579
|
+
display: flex;
|
|
4580
|
+
gap: 8px;
|
|
4581
|
+
padding: 8px 12px;
|
|
4582
|
+
border-bottom: 1px solid var(--border);
|
|
4583
|
+
}
|
|
4584
|
+
.db-query-history-action {
|
|
4585
|
+
padding: 4px 10px;
|
|
4586
|
+
border: 1px solid var(--border);
|
|
4587
|
+
border-radius: 4px;
|
|
4588
|
+
background: var(--bg);
|
|
4589
|
+
color: var(--fg);
|
|
4590
|
+
font-size: 12px;
|
|
4591
|
+
cursor: pointer;
|
|
4592
|
+
font-family: inherit;
|
|
4593
|
+
}
|
|
4594
|
+
.db-query-history-action:hover {
|
|
4595
|
+
background: var(--bg-mute);
|
|
4596
|
+
}
|
|
4597
|
+
.db-query-history-danger {
|
|
4598
|
+
color: var(--danger, #d32f2f);
|
|
4599
|
+
}
|
|
4600
|
+
.db-query-history-body-split {
|
|
4601
|
+
flex: 1;
|
|
4602
|
+
display: flex;
|
|
4603
|
+
overflow: hidden;
|
|
4604
|
+
}
|
|
4605
|
+
.db-query-history-list-col {
|
|
4606
|
+
width: 360px;
|
|
4607
|
+
min-width: 260px;
|
|
4608
|
+
max-width: 500px;
|
|
4609
|
+
border-right: 1px solid var(--border);
|
|
4610
|
+
display: flex;
|
|
4611
|
+
flex-direction: column;
|
|
4612
|
+
overflow: hidden;
|
|
4613
|
+
}
|
|
4614
|
+
.db-query-history-detail-col {
|
|
4615
|
+
flex: 1;
|
|
4616
|
+
overflow-y: auto;
|
|
4617
|
+
padding: 12px;
|
|
4618
|
+
}
|
|
4619
|
+
.db-query-history-detail-placeholder {
|
|
4620
|
+
color: var(--fg-muted);
|
|
4621
|
+
text-align: center;
|
|
4622
|
+
padding: 40px 16px;
|
|
4623
|
+
font-size: 13px;
|
|
4624
|
+
}
|
|
4625
|
+
.db-query-history-detail-actions {
|
|
4626
|
+
display: flex;
|
|
4627
|
+
gap: 8px;
|
|
4628
|
+
margin-bottom: 12px;
|
|
4629
|
+
}
|
|
4630
|
+
.db-query-history-list {
|
|
4631
|
+
flex: 1;
|
|
4632
|
+
overflow-y: auto;
|
|
4633
|
+
}
|
|
4634
|
+
.db-query-history-entry {
|
|
4635
|
+
padding: 8px 12px;
|
|
4636
|
+
border-bottom: 1px solid var(--border);
|
|
4637
|
+
cursor: pointer;
|
|
4638
|
+
}
|
|
4639
|
+
.db-query-history-entry:hover {
|
|
4640
|
+
background: var(--bg-mute);
|
|
4641
|
+
}
|
|
4642
|
+
.db-query-history-entry.selected {
|
|
4643
|
+
background: color-mix(in srgb, var(--accent) 12%, var(--bg));
|
|
4644
|
+
border-left: 3px solid var(--accent);
|
|
4645
|
+
padding-left: 9px;
|
|
4646
|
+
}
|
|
4647
|
+
.db-query-history-entry-meta {
|
|
4648
|
+
display: flex;
|
|
4649
|
+
gap: 8px;
|
|
4650
|
+
align-items: center;
|
|
4651
|
+
font-size: 11px;
|
|
4652
|
+
color: var(--fg-muted);
|
|
4653
|
+
}
|
|
4654
|
+
.db-query-history-by {
|
|
4655
|
+
font-weight: 600;
|
|
4656
|
+
font-size: 10px;
|
|
4657
|
+
}
|
|
4658
|
+
.db-query-history-time {
|
|
4659
|
+
font-size: 11px;
|
|
4660
|
+
}
|
|
4661
|
+
.db-query-history-stats {
|
|
4662
|
+
font-size: 11px;
|
|
4663
|
+
}
|
|
4664
|
+
.db-query-history-entry-title {
|
|
4665
|
+
margin-top: 4px;
|
|
4666
|
+
font-size: 12px;
|
|
4667
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
4668
|
+
white-space: nowrap;
|
|
4669
|
+
overflow: hidden;
|
|
4670
|
+
text-overflow: ellipsis;
|
|
4671
|
+
}
|
|
4672
|
+
.db-query-history-detail-col .db-query-history-sql {
|
|
4673
|
+
margin-bottom: 8px;
|
|
4674
|
+
}
|
|
4675
|
+
.db-query-history-sql {
|
|
4676
|
+
padding: 8px;
|
|
4677
|
+
border-radius: 4px;
|
|
4678
|
+
background: var(--bg);
|
|
4679
|
+
border: 1px solid var(--border);
|
|
4680
|
+
font-size: 12px;
|
|
4681
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
4682
|
+
white-space: pre-wrap;
|
|
4683
|
+
word-break: break-all;
|
|
4684
|
+
max-height: 200px;
|
|
4685
|
+
overflow-y: auto;
|
|
4686
|
+
margin: 0;
|
|
4687
|
+
}
|
|
4688
|
+
.db-query-history-body {
|
|
4689
|
+
margin-top: 8px;
|
|
4690
|
+
font-size: 12px;
|
|
4691
|
+
color: var(--fg-muted);
|
|
4692
|
+
}
|
|
4693
|
+
.db-query-history-actions {
|
|
4694
|
+
display: flex;
|
|
4695
|
+
gap: 8px;
|
|
4696
|
+
margin-top: 8px;
|
|
4697
|
+
}
|
|
4698
|
+
.db-query-history-truncated {
|
|
4699
|
+
margin-top: 4px;
|
|
4700
|
+
font-size: 11px;
|
|
4701
|
+
color: var(--fg-muted);
|
|
4702
|
+
text-align: center;
|
|
4703
|
+
}
|
|
4704
|
+
|
|
4447
4705
|
.annotation-panel-head {
|
|
4448
4706
|
display: flex;
|
|
4449
4707
|
align-items: center;
|
|
@@ -4888,3 +5146,1814 @@ body.annotation-panel-open #content {
|
|
|
4888
5146
|
.gdp-annotation-spacer td > div {
|
|
4889
5147
|
height: 0;
|
|
4890
5148
|
}
|
|
5149
|
+
|
|
5150
|
+
/* ============================================================
|
|
5151
|
+
Database Viewer
|
|
5152
|
+
============================================================ */
|
|
5153
|
+
|
|
5154
|
+
.gdp-database-page #topbar,
|
|
5155
|
+
.gdp-database-page #sidebar,
|
|
5156
|
+
.gdp-database-page #sidebar-toggle,
|
|
5157
|
+
.gdp-database-page #annotation-panel,
|
|
5158
|
+
.gdp-database-page #sidebar-resizer,
|
|
5159
|
+
.gdp-database-page #annotations-toggle,
|
|
5160
|
+
.gdp-database-page #query-history-panel,
|
|
5161
|
+
.gdp-database-page #query-history-toggle {
|
|
5162
|
+
display: none !important;
|
|
5163
|
+
}
|
|
5164
|
+
|
|
5165
|
+
.gdp-database-page #content {
|
|
5166
|
+
margin-left: 0;
|
|
5167
|
+
padding: var(--global-header-h) 0 0;
|
|
5168
|
+
min-height: 0;
|
|
5169
|
+
max-width: none;
|
|
5170
|
+
}
|
|
5171
|
+
|
|
5172
|
+
.db-container {
|
|
5173
|
+
--db-font-sm: 11px;
|
|
5174
|
+
--db-font-base: 12px;
|
|
5175
|
+
--db-font-md: 13px;
|
|
5176
|
+
--db-font-mono: 13px;
|
|
5177
|
+
display: flex;
|
|
5178
|
+
flex-direction: column;
|
|
5179
|
+
height: calc(100vh - var(--global-header-h));
|
|
5180
|
+
overflow: hidden;
|
|
5181
|
+
font-size: var(--db-font-base);
|
|
5182
|
+
}
|
|
5183
|
+
body[data-sidebar-font-size="compact"] .db-container {
|
|
5184
|
+
--db-font-sm: 10px;
|
|
5185
|
+
--db-font-base: 11px;
|
|
5186
|
+
--db-font-md: 12px;
|
|
5187
|
+
--db-font-mono: 12px;
|
|
5188
|
+
}
|
|
5189
|
+
body[data-sidebar-font-size="large"] .db-container {
|
|
5190
|
+
--db-font-sm: 12px;
|
|
5191
|
+
--db-font-base: 14px;
|
|
5192
|
+
--db-font-md: 15px;
|
|
5193
|
+
--db-font-mono: 14px;
|
|
5194
|
+
}
|
|
5195
|
+
body[data-sidebar-font-size="xlarge"] .db-container {
|
|
5196
|
+
--db-font-sm: 13px;
|
|
5197
|
+
--db-font-base: 15px;
|
|
5198
|
+
--db-font-md: 16px;
|
|
5199
|
+
--db-font-mono: 15px;
|
|
5200
|
+
}
|
|
5201
|
+
.db-upper-area {
|
|
5202
|
+
display: flex;
|
|
5203
|
+
flex: 1;
|
|
5204
|
+
overflow: hidden;
|
|
5205
|
+
}
|
|
5206
|
+
.db-history-resizer {
|
|
5207
|
+
height: 5px;
|
|
5208
|
+
cursor: row-resize;
|
|
5209
|
+
background: var(--border);
|
|
5210
|
+
flex-shrink: 0;
|
|
5211
|
+
}
|
|
5212
|
+
.db-history-resizer:hover,
|
|
5213
|
+
.db-history-resizer.active {
|
|
5214
|
+
background: var(--accent);
|
|
5215
|
+
opacity: 0.5;
|
|
5216
|
+
}
|
|
5217
|
+
.db-history-resizer[hidden] { display: none; }
|
|
5218
|
+
.db-history-pane {
|
|
5219
|
+
height: 220px;
|
|
5220
|
+
min-height: 60px;
|
|
5221
|
+
flex-shrink: 0;
|
|
5222
|
+
overflow: hidden;
|
|
5223
|
+
border-top: 1px solid var(--border);
|
|
5224
|
+
background: var(--bg);
|
|
5225
|
+
}
|
|
5226
|
+
.db-history-pane[hidden] { display: none; }
|
|
5227
|
+
.db-tools-section {
|
|
5228
|
+
border-top: 1px solid var(--border);
|
|
5229
|
+
padding: 6px 8px;
|
|
5230
|
+
display: flex;
|
|
5231
|
+
gap: 6px;
|
|
5232
|
+
flex-shrink: 0;
|
|
5233
|
+
}
|
|
5234
|
+
.db-tool-btn {
|
|
5235
|
+
flex: 1;
|
|
5236
|
+
padding: 5px 8px;
|
|
5237
|
+
border: 1px solid var(--border);
|
|
5238
|
+
border-radius: 6px;
|
|
5239
|
+
background: var(--bg);
|
|
5240
|
+
color: var(--fg-muted);
|
|
5241
|
+
font-size: var(--db-font-base);
|
|
5242
|
+
font-family: inherit;
|
|
5243
|
+
cursor: pointer;
|
|
5244
|
+
text-align: center;
|
|
5245
|
+
}
|
|
5246
|
+
.db-tool-btn:hover {
|
|
5247
|
+
background: var(--bg-mute);
|
|
5248
|
+
color: var(--fg);
|
|
5249
|
+
}
|
|
5250
|
+
.db-tool-btn.active {
|
|
5251
|
+
background: color-mix(in srgb, var(--accent) 12%, var(--bg));
|
|
5252
|
+
color: var(--accent);
|
|
5253
|
+
border-color: var(--accent);
|
|
5254
|
+
font-weight: 600;
|
|
5255
|
+
}
|
|
5256
|
+
.db-history-toggle {
|
|
5257
|
+
display: flex;
|
|
5258
|
+
align-items: center;
|
|
5259
|
+
gap: 6px;
|
|
5260
|
+
width: 100%;
|
|
5261
|
+
padding: 8px 12px;
|
|
5262
|
+
border: none;
|
|
5263
|
+
border-top: 1px solid var(--border);
|
|
5264
|
+
background: var(--bg-soft);
|
|
5265
|
+
color: var(--fg-muted);
|
|
5266
|
+
font-size: var(--db-font-base);
|
|
5267
|
+
font-family: inherit;
|
|
5268
|
+
cursor: pointer;
|
|
5269
|
+
text-align: left;
|
|
5270
|
+
flex-shrink: 0;
|
|
5271
|
+
}
|
|
5272
|
+
.db-history-toggle:hover {
|
|
5273
|
+
background: var(--bg-mute);
|
|
5274
|
+
color: var(--fg);
|
|
5275
|
+
}
|
|
5276
|
+
.db-history-toggle.active {
|
|
5277
|
+
color: var(--accent);
|
|
5278
|
+
font-weight: 600;
|
|
5279
|
+
}
|
|
5280
|
+
|
|
5281
|
+
/* ---------- Sidebar ---------- */
|
|
5282
|
+
.db-sidebar {
|
|
5283
|
+
width: 260px;
|
|
5284
|
+
min-width: 120px;
|
|
5285
|
+
max-width: 600px;
|
|
5286
|
+
border-right: 1px solid var(--border);
|
|
5287
|
+
background: var(--bg-soft);
|
|
5288
|
+
display: flex;
|
|
5289
|
+
flex-direction: column;
|
|
5290
|
+
overflow: hidden;
|
|
5291
|
+
position: relative;
|
|
5292
|
+
}
|
|
5293
|
+
.db-sidebar-resize {
|
|
5294
|
+
position: absolute;
|
|
5295
|
+
top: 0;
|
|
5296
|
+
right: -3px;
|
|
5297
|
+
width: 6px;
|
|
5298
|
+
height: 100%;
|
|
5299
|
+
cursor: col-resize;
|
|
5300
|
+
z-index: 10;
|
|
5301
|
+
}
|
|
5302
|
+
.db-sidebar-resize:hover,
|
|
5303
|
+
.db-sidebar-resize.active {
|
|
5304
|
+
background: var(--accent);
|
|
5305
|
+
opacity: 0.3;
|
|
5306
|
+
}
|
|
5307
|
+
|
|
5308
|
+
.db-toolbar {
|
|
5309
|
+
padding: 8px;
|
|
5310
|
+
border-bottom: 1px solid var(--border);
|
|
5311
|
+
}
|
|
5312
|
+
|
|
5313
|
+
.db-file-select {
|
|
5314
|
+
width: 100%;
|
|
5315
|
+
padding: 5px 24px 5px 8px;
|
|
5316
|
+
border: 1px solid var(--border);
|
|
5317
|
+
border-radius: 6px;
|
|
5318
|
+
background: var(--bg);
|
|
5319
|
+
color: var(--fg);
|
|
5320
|
+
font-size: var(--db-font-base);
|
|
5321
|
+
font-family: inherit;
|
|
5322
|
+
cursor: pointer;
|
|
5323
|
+
text-overflow: ellipsis;
|
|
5324
|
+
appearance: none;
|
|
5325
|
+
-webkit-appearance: none;
|
|
5326
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M3 4.5L6 8l3-3.5H3z'/%3E%3C/svg%3E");
|
|
5327
|
+
background-repeat: no-repeat;
|
|
5328
|
+
background-position: right 6px center;
|
|
5329
|
+
}
|
|
5330
|
+
.db-file-select:focus {
|
|
5331
|
+
outline: 2px solid var(--accent);
|
|
5332
|
+
outline-offset: -1px;
|
|
5333
|
+
}
|
|
5334
|
+
|
|
5335
|
+
.db-table-filter-wrap {
|
|
5336
|
+
padding: 4px 8px;
|
|
5337
|
+
}
|
|
5338
|
+
.db-table-filter {
|
|
5339
|
+
width: 100%;
|
|
5340
|
+
padding: 4px 8px 4px 24px;
|
|
5341
|
+
border: 1px solid var(--border);
|
|
5342
|
+
border-radius: 6px;
|
|
5343
|
+
background: var(--bg);
|
|
5344
|
+
color: var(--fg);
|
|
5345
|
+
font-size: var(--db-font-base);
|
|
5346
|
+
font-family: inherit;
|
|
5347
|
+
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='%23999' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
|
|
5348
|
+
background-repeat: no-repeat;
|
|
5349
|
+
background-position: 6px center;
|
|
5350
|
+
}
|
|
5351
|
+
.db-table-filter:focus {
|
|
5352
|
+
outline: 2px solid var(--accent);
|
|
5353
|
+
outline-offset: -1px;
|
|
5354
|
+
border-color: var(--accent);
|
|
5355
|
+
}
|
|
5356
|
+
.db-table-list {
|
|
5357
|
+
flex: 1;
|
|
5358
|
+
overflow-y: auto;
|
|
5359
|
+
padding: 4px 0;
|
|
5360
|
+
}
|
|
5361
|
+
|
|
5362
|
+
.db-table-list-empty {
|
|
5363
|
+
padding: 16px;
|
|
5364
|
+
color: var(--fg-muted);
|
|
5365
|
+
text-align: center;
|
|
5366
|
+
font-size: var(--db-font-md);
|
|
5367
|
+
}
|
|
5368
|
+
|
|
5369
|
+
.db-table-group-header {
|
|
5370
|
+
padding: 6px 12px 2px;
|
|
5371
|
+
font-size: var(--db-font-sm);
|
|
5372
|
+
font-weight: 600;
|
|
5373
|
+
color: var(--fg-subtle);
|
|
5374
|
+
text-transform: uppercase;
|
|
5375
|
+
letter-spacing: 0.5px;
|
|
5376
|
+
}
|
|
5377
|
+
|
|
5378
|
+
.db-table-node {
|
|
5379
|
+
border-bottom: 1px solid var(--border);
|
|
5380
|
+
}
|
|
5381
|
+
.db-table-arrow {
|
|
5382
|
+
flex-shrink: 0;
|
|
5383
|
+
width: 16px;
|
|
5384
|
+
height: 16px;
|
|
5385
|
+
cursor: pointer;
|
|
5386
|
+
user-select: none;
|
|
5387
|
+
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23888' d='M6 4l4 4-4 4z'/%3E%3C/svg%3E") center/contain no-repeat;
|
|
5388
|
+
transition: transform 0.15s;
|
|
5389
|
+
}
|
|
5390
|
+
.db-table-arrow.expanded {
|
|
5391
|
+
transform: rotate(90deg);
|
|
5392
|
+
}
|
|
5393
|
+
.db-table-arrow:hover {
|
|
5394
|
+
opacity: 0.7;
|
|
5395
|
+
}
|
|
5396
|
+
.db-table-item {
|
|
5397
|
+
display: flex;
|
|
5398
|
+
align-items: center;
|
|
5399
|
+
gap: 4px;
|
|
5400
|
+
padding: 4px 8px;
|
|
5401
|
+
cursor: pointer;
|
|
5402
|
+
font-size: var(--db-font-md);
|
|
5403
|
+
color: var(--fg);
|
|
5404
|
+
border-left: 3px solid transparent;
|
|
5405
|
+
transition: background 0.1s;
|
|
5406
|
+
}
|
|
5407
|
+
.db-table-item:hover {
|
|
5408
|
+
background: var(--bg-mute);
|
|
5409
|
+
}
|
|
5410
|
+
.db-table-item.active {
|
|
5411
|
+
background: var(--accent-subtle);
|
|
5412
|
+
border-left-color: var(--accent);
|
|
5413
|
+
font-weight: 500;
|
|
5414
|
+
}
|
|
5415
|
+
.db-table-children {
|
|
5416
|
+
padding-left: 20px;
|
|
5417
|
+
}
|
|
5418
|
+
.db-table-children[hidden] { display: none; }
|
|
5419
|
+
.db-table-col-item {
|
|
5420
|
+
display: flex;
|
|
5421
|
+
align-items: center;
|
|
5422
|
+
gap: 6px;
|
|
5423
|
+
padding: 2px 8px;
|
|
5424
|
+
font-size: var(--db-font-sm);
|
|
5425
|
+
color: var(--fg-muted);
|
|
5426
|
+
}
|
|
5427
|
+
.db-table-col-item.pk {
|
|
5428
|
+
color: var(--fg);
|
|
5429
|
+
font-weight: 500;
|
|
5430
|
+
}
|
|
5431
|
+
.db-table-col-item.pk .db-table-col-name::before {
|
|
5432
|
+
content: "🔑 ";
|
|
5433
|
+
font-size: 9px;
|
|
5434
|
+
}
|
|
5435
|
+
.db-table-col-name {
|
|
5436
|
+
flex: 1;
|
|
5437
|
+
overflow: hidden;
|
|
5438
|
+
text-overflow: ellipsis;
|
|
5439
|
+
white-space: nowrap;
|
|
5440
|
+
}
|
|
5441
|
+
.db-table-col-type {
|
|
5442
|
+
flex-shrink: 0;
|
|
5443
|
+
font-size: var(--db-font-sm);
|
|
5444
|
+
color: var(--fg-subtle);
|
|
5445
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5446
|
+
}
|
|
5447
|
+
|
|
5448
|
+
.db-table-icon {
|
|
5449
|
+
display: inline-flex;
|
|
5450
|
+
align-items: center;
|
|
5451
|
+
justify-content: center;
|
|
5452
|
+
width: 18px;
|
|
5453
|
+
height: 18px;
|
|
5454
|
+
border-radius: 3px;
|
|
5455
|
+
font-size: var(--db-font-sm);
|
|
5456
|
+
font-weight: 700;
|
|
5457
|
+
color: var(--fg-onemphasis);
|
|
5458
|
+
background: var(--accent);
|
|
5459
|
+
flex-shrink: 0;
|
|
5460
|
+
}
|
|
5461
|
+
.db-table-item[data-type="view"] .db-table-icon {
|
|
5462
|
+
background: var(--scope-accent);
|
|
5463
|
+
}
|
|
5464
|
+
|
|
5465
|
+
.db-table-name {
|
|
5466
|
+
flex: 1;
|
|
5467
|
+
overflow: hidden;
|
|
5468
|
+
text-overflow: ellipsis;
|
|
5469
|
+
white-space: nowrap;
|
|
5470
|
+
}
|
|
5471
|
+
|
|
5472
|
+
.db-table-count {
|
|
5473
|
+
font-size: var(--db-font-sm);
|
|
5474
|
+
color: var(--fg-subtle);
|
|
5475
|
+
flex-shrink: 0;
|
|
5476
|
+
}
|
|
5477
|
+
|
|
5478
|
+
/* ---------- Main content ---------- */
|
|
5479
|
+
.db-main-content {
|
|
5480
|
+
flex: 1;
|
|
5481
|
+
display: flex;
|
|
5482
|
+
flex-direction: column;
|
|
5483
|
+
overflow: hidden;
|
|
5484
|
+
background: var(--bg);
|
|
5485
|
+
}
|
|
5486
|
+
|
|
5487
|
+
/* ---------- Tab bar ---------- */
|
|
5488
|
+
.db-tab-bar {
|
|
5489
|
+
display: flex;
|
|
5490
|
+
gap: 0;
|
|
5491
|
+
border-bottom: 1px solid var(--border);
|
|
5492
|
+
background: var(--bg-soft);
|
|
5493
|
+
padding: 0 8px;
|
|
5494
|
+
flex-shrink: 0;
|
|
5495
|
+
}
|
|
5496
|
+
|
|
5497
|
+
.db-tab {
|
|
5498
|
+
padding: 8px 16px;
|
|
5499
|
+
border: none;
|
|
5500
|
+
background: none;
|
|
5501
|
+
color: var(--fg-muted);
|
|
5502
|
+
font-size: var(--db-font-md);
|
|
5503
|
+
font-weight: 500;
|
|
5504
|
+
cursor: pointer;
|
|
5505
|
+
border-bottom: 2px solid transparent;
|
|
5506
|
+
margin-bottom: -1px;
|
|
5507
|
+
transition: color 0.15s;
|
|
5508
|
+
}
|
|
5509
|
+
.db-tab:hover {
|
|
5510
|
+
color: var(--fg);
|
|
5511
|
+
}
|
|
5512
|
+
.db-tab.active {
|
|
5513
|
+
color: var(--fg);
|
|
5514
|
+
border-bottom-color: var(--accent);
|
|
5515
|
+
}
|
|
5516
|
+
|
|
5517
|
+
/* hidden attribute override for flex containers */
|
|
5518
|
+
.db-grid[hidden],
|
|
5519
|
+
.db-query-editor[hidden],
|
|
5520
|
+
.db-schema-view[hidden] {
|
|
5521
|
+
display: none !important;
|
|
5522
|
+
}
|
|
5523
|
+
|
|
5524
|
+
/* ---------- Shared Button Base ---------- */
|
|
5525
|
+
.db-btn {
|
|
5526
|
+
padding: 3px 10px;
|
|
5527
|
+
border: 1px solid var(--border);
|
|
5528
|
+
border-radius: 4px;
|
|
5529
|
+
background: var(--bg);
|
|
5530
|
+
color: var(--fg);
|
|
5531
|
+
font-size: var(--db-font-base);
|
|
5532
|
+
font-family: inherit;
|
|
5533
|
+
cursor: pointer;
|
|
5534
|
+
transition: background 0.15s;
|
|
5535
|
+
white-space: nowrap;
|
|
5536
|
+
}
|
|
5537
|
+
.db-btn:hover {
|
|
5538
|
+
background: var(--bg-mute);
|
|
5539
|
+
}
|
|
5540
|
+
.db-btn:disabled {
|
|
5541
|
+
opacity: 0.6;
|
|
5542
|
+
cursor: default;
|
|
5543
|
+
}
|
|
5544
|
+
.db-btn-primary {
|
|
5545
|
+
border: none;
|
|
5546
|
+
background: var(--accent);
|
|
5547
|
+
color: #fff;
|
|
5548
|
+
font-weight: 600;
|
|
5549
|
+
}
|
|
5550
|
+
.db-btn-primary:hover {
|
|
5551
|
+
background: var(--accent-emph);
|
|
5552
|
+
}
|
|
5553
|
+
.db-btn-sm {
|
|
5554
|
+
padding: 2px 8px;
|
|
5555
|
+
font-size: var(--db-font-sm);
|
|
5556
|
+
}
|
|
5557
|
+
.db-btn-icon {
|
|
5558
|
+
padding: 0 4px;
|
|
5559
|
+
border: none;
|
|
5560
|
+
background: none;
|
|
5561
|
+
line-height: 1;
|
|
5562
|
+
}
|
|
5563
|
+
.db-btn-icon:hover {
|
|
5564
|
+
color: var(--accent);
|
|
5565
|
+
background: none;
|
|
5566
|
+
}
|
|
5567
|
+
|
|
5568
|
+
/* ---------- Data Grid ---------- */
|
|
5569
|
+
.db-grid {
|
|
5570
|
+
flex: 1;
|
|
5571
|
+
display: flex;
|
|
5572
|
+
flex-direction: column;
|
|
5573
|
+
overflow: hidden;
|
|
5574
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5575
|
+
font-size: var(--db-font-base);
|
|
5576
|
+
}
|
|
5577
|
+
|
|
5578
|
+
.db-grid-header-wrap {
|
|
5579
|
+
flex-shrink: 0;
|
|
5580
|
+
overflow: hidden;
|
|
5581
|
+
border-bottom: 2px solid var(--border);
|
|
5582
|
+
background: var(--bg-soft);
|
|
5583
|
+
}
|
|
5584
|
+
|
|
5585
|
+
.db-grid-header {
|
|
5586
|
+
display: flex;
|
|
5587
|
+
min-height: 32px;
|
|
5588
|
+
width: max-content;
|
|
5589
|
+
min-width: 100%;
|
|
5590
|
+
}
|
|
5591
|
+
|
|
5592
|
+
.db-grid-header-cell {
|
|
5593
|
+
display: flex;
|
|
5594
|
+
align-items: center;
|
|
5595
|
+
gap: 4px;
|
|
5596
|
+
cursor: pointer;
|
|
5597
|
+
user-select: none;
|
|
5598
|
+
transition: background 0.1s;
|
|
5599
|
+
}
|
|
5600
|
+
.db-grid-header-cell:hover {
|
|
5601
|
+
background: var(--bg-mute);
|
|
5602
|
+
}
|
|
5603
|
+
.db-grid-header-cell.sorted {
|
|
5604
|
+
background: var(--accent-subtle);
|
|
5605
|
+
}
|
|
5606
|
+
|
|
5607
|
+
.db-grid-header-label {
|
|
5608
|
+
font-weight: 600;
|
|
5609
|
+
overflow: hidden;
|
|
5610
|
+
text-overflow: ellipsis;
|
|
5611
|
+
white-space: nowrap;
|
|
5612
|
+
}
|
|
5613
|
+
|
|
5614
|
+
.db-grid-header-type {
|
|
5615
|
+
font-size: var(--db-font-sm);
|
|
5616
|
+
color: var(--fg-subtle);
|
|
5617
|
+
padding: 1px 4px;
|
|
5618
|
+
border-radius: 3px;
|
|
5619
|
+
background: var(--bg-mute);
|
|
5620
|
+
flex-shrink: 0;
|
|
5621
|
+
}
|
|
5622
|
+
.db-grid-header-type.pk {
|
|
5623
|
+
background: var(--attention-subtle, #fff8c5);
|
|
5624
|
+
color: var(--scope-accent);
|
|
5625
|
+
font-weight: 600;
|
|
5626
|
+
}
|
|
5627
|
+
|
|
5628
|
+
.db-grid-sort-icon {
|
|
5629
|
+
font-size: var(--db-font-sm);
|
|
5630
|
+
color: var(--accent);
|
|
5631
|
+
width: 12px;
|
|
5632
|
+
flex-shrink: 0;
|
|
5633
|
+
}
|
|
5634
|
+
|
|
5635
|
+
.db-grid-viewport {
|
|
5636
|
+
flex: 1;
|
|
5637
|
+
overflow: auto;
|
|
5638
|
+
position: relative;
|
|
5639
|
+
}
|
|
5640
|
+
|
|
5641
|
+
.db-grid-spacer {
|
|
5642
|
+
width: 1px;
|
|
5643
|
+
pointer-events: none;
|
|
5644
|
+
}
|
|
5645
|
+
|
|
5646
|
+
.db-grid-body {
|
|
5647
|
+
position: absolute;
|
|
5648
|
+
left: 0;
|
|
5649
|
+
right: 0;
|
|
5650
|
+
top: 0;
|
|
5651
|
+
will-change: transform;
|
|
5652
|
+
}
|
|
5653
|
+
|
|
5654
|
+
.db-grid-row {
|
|
5655
|
+
display: flex;
|
|
5656
|
+
height: 28px;
|
|
5657
|
+
border-bottom: 1px solid var(--border);
|
|
5658
|
+
width: max-content;
|
|
5659
|
+
min-width: 100%;
|
|
5660
|
+
}
|
|
5661
|
+
.db-grid-row.alt {
|
|
5662
|
+
background: var(--bg-soft);
|
|
5663
|
+
}
|
|
5664
|
+
.db-grid-row:hover {
|
|
5665
|
+
background: var(--accent-subtle);
|
|
5666
|
+
}
|
|
5667
|
+
|
|
5668
|
+
.db-grid-cell {
|
|
5669
|
+
width: 180px;
|
|
5670
|
+
min-width: 80px;
|
|
5671
|
+
flex: 0 0 auto;
|
|
5672
|
+
padding: 4px 8px;
|
|
5673
|
+
overflow: hidden;
|
|
5674
|
+
text-overflow: ellipsis;
|
|
5675
|
+
white-space: nowrap;
|
|
5676
|
+
line-height: 20px;
|
|
5677
|
+
border-right: 1px solid var(--border);
|
|
5678
|
+
}
|
|
5679
|
+
.db-grid-cell:last-child {
|
|
5680
|
+
border-right: 1px solid var(--border);
|
|
5681
|
+
}
|
|
5682
|
+
.db-grid-row.selected {
|
|
5683
|
+
background: var(--accent-subtle) !important;
|
|
5684
|
+
outline: 1px solid var(--accent);
|
|
5685
|
+
outline-offset: -1px;
|
|
5686
|
+
}
|
|
5687
|
+
.db-grid-cell.null {
|
|
5688
|
+
color: var(--fg-subtle);
|
|
5689
|
+
font-style: italic;
|
|
5690
|
+
font-size: var(--db-font-sm);
|
|
5691
|
+
background: rgba(128, 128, 128, 0.06);
|
|
5692
|
+
border-radius: 3px;
|
|
5693
|
+
}
|
|
5694
|
+
.db-grid-cell.empty {
|
|
5695
|
+
color: var(--fg-subtle);
|
|
5696
|
+
font-style: italic;
|
|
5697
|
+
font-size: var(--db-font-sm);
|
|
5698
|
+
}
|
|
5699
|
+
.db-grid-cell.blob {
|
|
5700
|
+
color: var(--fg-subtle);
|
|
5701
|
+
font-size: var(--db-font-sm);
|
|
5702
|
+
}
|
|
5703
|
+
.db-grid-cell.loading {
|
|
5704
|
+
color: var(--fg-subtle);
|
|
5705
|
+
}
|
|
5706
|
+
.db-grid-cell.copied {
|
|
5707
|
+
background: rgba(46, 160, 67, 0.15);
|
|
5708
|
+
transition: background 0.1s;
|
|
5709
|
+
}
|
|
5710
|
+
.db-grid-cell:not(.db-grid-rownum):hover {
|
|
5711
|
+
background: rgba(0, 0, 0, 0.04);
|
|
5712
|
+
}
|
|
5713
|
+
|
|
5714
|
+
.db-grid-rownum-header,
|
|
5715
|
+
.db-grid-rownum {
|
|
5716
|
+
min-width: 50px;
|
|
5717
|
+
max-width: 60px;
|
|
5718
|
+
flex: 0 0 50px;
|
|
5719
|
+
text-align: right;
|
|
5720
|
+
color: var(--fg-subtle);
|
|
5721
|
+
background: var(--bg-soft);
|
|
5722
|
+
font-size: var(--db-font-sm);
|
|
5723
|
+
border-right: 1px solid var(--border);
|
|
5724
|
+
}
|
|
5725
|
+
|
|
5726
|
+
.db-grid-status {
|
|
5727
|
+
padding: 4px 12px;
|
|
5728
|
+
font-size: var(--db-font-base);
|
|
5729
|
+
color: var(--fg-muted);
|
|
5730
|
+
border-top: 1px solid var(--border);
|
|
5731
|
+
background: var(--bg-soft);
|
|
5732
|
+
flex-shrink: 0;
|
|
5733
|
+
}
|
|
5734
|
+
|
|
5735
|
+
/* ---------- Query Editor ---------- */
|
|
5736
|
+
.db-query-editor {
|
|
5737
|
+
flex: 1;
|
|
5738
|
+
display: flex;
|
|
5739
|
+
flex-direction: column;
|
|
5740
|
+
overflow: hidden;
|
|
5741
|
+
}
|
|
5742
|
+
|
|
5743
|
+
.db-query-input {
|
|
5744
|
+
padding: 8px;
|
|
5745
|
+
border-bottom: 1px solid var(--border);
|
|
5746
|
+
flex-shrink: 0;
|
|
5747
|
+
}
|
|
5748
|
+
|
|
5749
|
+
.db-query-editor-wrap {
|
|
5750
|
+
position: relative;
|
|
5751
|
+
border: 1px solid var(--border);
|
|
5752
|
+
border-radius: 6px;
|
|
5753
|
+
overflow: hidden;
|
|
5754
|
+
min-height: 60px;
|
|
5755
|
+
}
|
|
5756
|
+
.db-query-editor-wrap:focus-within {
|
|
5757
|
+
outline: 2px solid var(--accent);
|
|
5758
|
+
outline-offset: -1px;
|
|
5759
|
+
border-color: var(--accent);
|
|
5760
|
+
}
|
|
5761
|
+
.db-query-highlight {
|
|
5762
|
+
position: absolute;
|
|
5763
|
+
inset: 0;
|
|
5764
|
+
margin: 0;
|
|
5765
|
+
padding: 8px;
|
|
5766
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5767
|
+
font-size: var(--db-font-md);
|
|
5768
|
+
line-height: 1.5;
|
|
5769
|
+
white-space: pre-wrap;
|
|
5770
|
+
word-wrap: break-word;
|
|
5771
|
+
overflow: hidden;
|
|
5772
|
+
pointer-events: none;
|
|
5773
|
+
background: var(--bg);
|
|
5774
|
+
color: var(--fg);
|
|
5775
|
+
}
|
|
5776
|
+
.db-query-highlight code {
|
|
5777
|
+
font-family: inherit;
|
|
5778
|
+
font-size: inherit;
|
|
5779
|
+
}
|
|
5780
|
+
.db-query-highlight span[style] {
|
|
5781
|
+
color: var(--shiki-light);
|
|
5782
|
+
}
|
|
5783
|
+
@media (prefers-color-scheme: dark) {
|
|
5784
|
+
.db-query-highlight span[style] {
|
|
5785
|
+
color: var(--shiki-dark);
|
|
5786
|
+
}
|
|
5787
|
+
}
|
|
5788
|
+
html[data-theme="dark"] .db-query-highlight span[style] {
|
|
5789
|
+
color: var(--shiki-dark);
|
|
5790
|
+
}
|
|
5791
|
+
.db-query-textarea {
|
|
5792
|
+
position: relative;
|
|
5793
|
+
width: 100%;
|
|
5794
|
+
padding: 8px;
|
|
5795
|
+
border: none;
|
|
5796
|
+
border-radius: 0;
|
|
5797
|
+
background: transparent;
|
|
5798
|
+
color: transparent;
|
|
5799
|
+
caret-color: var(--fg);
|
|
5800
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5801
|
+
font-size: var(--db-font-md);
|
|
5802
|
+
line-height: 1.5;
|
|
5803
|
+
resize: vertical;
|
|
5804
|
+
min-height: 60px;
|
|
5805
|
+
z-index: 1;
|
|
5806
|
+
}
|
|
5807
|
+
.db-query-textarea::selection {
|
|
5808
|
+
background: var(--accent);
|
|
5809
|
+
color: transparent;
|
|
5810
|
+
}
|
|
5811
|
+
.db-query-textarea:focus {
|
|
5812
|
+
outline: none;
|
|
5813
|
+
}
|
|
5814
|
+
|
|
5815
|
+
.db-query-toolbar {
|
|
5816
|
+
display: flex;
|
|
5817
|
+
align-items: center;
|
|
5818
|
+
gap: 8px;
|
|
5819
|
+
margin-top: 6px;
|
|
5820
|
+
}
|
|
5821
|
+
|
|
5822
|
+
.db-query-run {
|
|
5823
|
+
padding: 4px 16px;
|
|
5824
|
+
border-radius: 6px;
|
|
5825
|
+
}
|
|
5826
|
+
|
|
5827
|
+
.db-query-status {
|
|
5828
|
+
font-size: var(--db-font-base);
|
|
5829
|
+
color: var(--fg-muted);
|
|
5830
|
+
}
|
|
5831
|
+
|
|
5832
|
+
.db-query-result {
|
|
5833
|
+
flex: 1;
|
|
5834
|
+
overflow: auto;
|
|
5835
|
+
padding: 8px;
|
|
5836
|
+
}
|
|
5837
|
+
|
|
5838
|
+
.db-query-error {
|
|
5839
|
+
padding: 12px;
|
|
5840
|
+
border-radius: 6px;
|
|
5841
|
+
background: var(--danger-subtle, #ffebe9);
|
|
5842
|
+
color: var(--danger);
|
|
5843
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5844
|
+
font-size: var(--db-font-base);
|
|
5845
|
+
white-space: pre-wrap;
|
|
5846
|
+
word-break: break-word;
|
|
5847
|
+
}
|
|
5848
|
+
|
|
5849
|
+
.db-query-table-wrap {
|
|
5850
|
+
overflow: auto;
|
|
5851
|
+
max-height: 100%;
|
|
5852
|
+
}
|
|
5853
|
+
|
|
5854
|
+
.db-query-table {
|
|
5855
|
+
border-collapse: collapse;
|
|
5856
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5857
|
+
font-size: var(--db-font-base);
|
|
5858
|
+
width: max-content;
|
|
5859
|
+
min-width: 100%;
|
|
5860
|
+
}
|
|
5861
|
+
.db-query-table th,
|
|
5862
|
+
.db-query-table td {
|
|
5863
|
+
padding: 4px 10px;
|
|
5864
|
+
border: 1px solid var(--border);
|
|
5865
|
+
white-space: nowrap;
|
|
5866
|
+
max-width: 400px;
|
|
5867
|
+
overflow: hidden;
|
|
5868
|
+
text-overflow: ellipsis;
|
|
5869
|
+
}
|
|
5870
|
+
.db-query-table th {
|
|
5871
|
+
background: var(--bg-soft);
|
|
5872
|
+
font-weight: 600;
|
|
5873
|
+
text-align: left;
|
|
5874
|
+
position: sticky;
|
|
5875
|
+
top: 0;
|
|
5876
|
+
z-index: 1;
|
|
5877
|
+
}
|
|
5878
|
+
.db-query-table tr.alt td {
|
|
5879
|
+
background: var(--bg-soft);
|
|
5880
|
+
}
|
|
5881
|
+
.db-query-table tr:hover td {
|
|
5882
|
+
background: var(--accent-subtle);
|
|
5883
|
+
}
|
|
5884
|
+
.db-query-table td.null {
|
|
5885
|
+
color: var(--fg-subtle);
|
|
5886
|
+
font-style: italic;
|
|
5887
|
+
}
|
|
5888
|
+
|
|
5889
|
+
/* ---------- Schema View ---------- */
|
|
5890
|
+
.db-schema-view {
|
|
5891
|
+
flex: 1;
|
|
5892
|
+
overflow: auto;
|
|
5893
|
+
padding: 12px 16px;
|
|
5894
|
+
}
|
|
5895
|
+
|
|
5896
|
+
.db-schema-header {
|
|
5897
|
+
font-size: 14px;
|
|
5898
|
+
font-weight: 600;
|
|
5899
|
+
color: var(--fg);
|
|
5900
|
+
margin: 12px 0 8px;
|
|
5901
|
+
padding-bottom: 4px;
|
|
5902
|
+
border-bottom: 1px solid var(--border);
|
|
5903
|
+
}
|
|
5904
|
+
.db-schema-header:first-child {
|
|
5905
|
+
margin-top: 0;
|
|
5906
|
+
}
|
|
5907
|
+
|
|
5908
|
+
.db-schema-table {
|
|
5909
|
+
border-collapse: collapse;
|
|
5910
|
+
font-size: var(--db-font-md);
|
|
5911
|
+
width: 100%;
|
|
5912
|
+
margin-bottom: 16px;
|
|
5913
|
+
}
|
|
5914
|
+
.db-schema-table th,
|
|
5915
|
+
.db-schema-table td {
|
|
5916
|
+
padding: 5px 10px;
|
|
5917
|
+
border: 1px solid var(--border);
|
|
5918
|
+
text-align: left;
|
|
5919
|
+
}
|
|
5920
|
+
.db-schema-table th {
|
|
5921
|
+
background: var(--bg-soft);
|
|
5922
|
+
font-weight: 600;
|
|
5923
|
+
font-size: var(--db-font-base);
|
|
5924
|
+
}
|
|
5925
|
+
.db-schema-table tr.pk-row {
|
|
5926
|
+
background: var(--attention-subtle, #fff8c5);
|
|
5927
|
+
}
|
|
5928
|
+
|
|
5929
|
+
.db-schema-col-name {
|
|
5930
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5931
|
+
font-weight: 500;
|
|
5932
|
+
}
|
|
5933
|
+
.db-schema-col-type {
|
|
5934
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5935
|
+
color: var(--fg-muted);
|
|
5936
|
+
}
|
|
5937
|
+
.db-schema-pk {
|
|
5938
|
+
color: var(--scope-accent);
|
|
5939
|
+
font-weight: 700;
|
|
5940
|
+
}
|
|
5941
|
+
.db-schema-default {
|
|
5942
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
5943
|
+
color: var(--fg-subtle);
|
|
5944
|
+
font-size: var(--db-font-base);
|
|
5945
|
+
}
|
|
5946
|
+
|
|
5947
|
+
/* ---------- Data Grid: Filter Bar ---------- */
|
|
5948
|
+
.db-grid-filter-bar {
|
|
5949
|
+
display: flex;
|
|
5950
|
+
align-items: center;
|
|
5951
|
+
gap: 6px;
|
|
5952
|
+
padding: 6px 8px;
|
|
5953
|
+
border-bottom: 1px solid var(--border);
|
|
5954
|
+
background: var(--bg-soft);
|
|
5955
|
+
flex-shrink: 0;
|
|
5956
|
+
}
|
|
5957
|
+
|
|
5958
|
+
.db-grid-filter-icon {
|
|
5959
|
+
font-size: var(--db-font-md);
|
|
5960
|
+
flex-shrink: 0;
|
|
5961
|
+
}
|
|
5962
|
+
|
|
5963
|
+
.db-grid-filter-input {
|
|
5964
|
+
flex: 1;
|
|
5965
|
+
padding: 4px 8px;
|
|
5966
|
+
border: 1px solid var(--border);
|
|
5967
|
+
border-radius: 4px;
|
|
5968
|
+
background: var(--bg);
|
|
5969
|
+
color: var(--fg);
|
|
5970
|
+
font-size: var(--db-font-base);
|
|
5971
|
+
font-family: inherit;
|
|
5972
|
+
min-width: 0;
|
|
5973
|
+
}
|
|
5974
|
+
.db-grid-filter-input:focus {
|
|
5975
|
+
outline: 2px solid var(--accent);
|
|
5976
|
+
outline-offset: -1px;
|
|
5977
|
+
border-color: var(--accent);
|
|
5978
|
+
}
|
|
5979
|
+
|
|
5980
|
+
.db-grid-filter-clear {
|
|
5981
|
+
border: none;
|
|
5982
|
+
background: none;
|
|
5983
|
+
color: var(--fg-muted);
|
|
5984
|
+
font-size: 16px;
|
|
5985
|
+
cursor: pointer;
|
|
5986
|
+
padding: 0 4px;
|
|
5987
|
+
line-height: 1;
|
|
5988
|
+
}
|
|
5989
|
+
.db-grid-filter-clear:hover {
|
|
5990
|
+
color: var(--danger);
|
|
5991
|
+
}
|
|
5992
|
+
|
|
5993
|
+
/* ---------- Data Grid: Column Filter Row ---------- */
|
|
5994
|
+
.db-grid-filter-row-wrap {
|
|
5995
|
+
flex-shrink: 0;
|
|
5996
|
+
overflow: hidden;
|
|
5997
|
+
border-bottom: 1px solid var(--border);
|
|
5998
|
+
background: var(--bg-soft);
|
|
5999
|
+
}
|
|
6000
|
+
|
|
6001
|
+
.db-grid-filter-row {
|
|
6002
|
+
display: flex;
|
|
6003
|
+
min-height: 28px;
|
|
6004
|
+
width: max-content;
|
|
6005
|
+
min-width: 100%;
|
|
6006
|
+
}
|
|
6007
|
+
|
|
6008
|
+
.db-grid-filter-cell {
|
|
6009
|
+
padding: 2px 4px;
|
|
6010
|
+
}
|
|
6011
|
+
|
|
6012
|
+
.db-grid-filter-spacer {
|
|
6013
|
+
background: var(--bg-soft);
|
|
6014
|
+
}
|
|
6015
|
+
|
|
6016
|
+
.db-grid-col-filter {
|
|
6017
|
+
width: 100%;
|
|
6018
|
+
padding: 2px 6px;
|
|
6019
|
+
border: 1px solid var(--border);
|
|
6020
|
+
border-radius: 3px;
|
|
6021
|
+
background: var(--bg);
|
|
6022
|
+
color: var(--fg);
|
|
6023
|
+
font-size: var(--db-font-sm);
|
|
6024
|
+
font-family: inherit;
|
|
6025
|
+
box-sizing: border-box;
|
|
6026
|
+
}
|
|
6027
|
+
.db-grid-col-filter:focus {
|
|
6028
|
+
outline: 1px solid var(--accent);
|
|
6029
|
+
border-color: var(--accent);
|
|
6030
|
+
}
|
|
6031
|
+
.db-grid-col-filter::placeholder {
|
|
6032
|
+
color: var(--fg-subtle);
|
|
6033
|
+
font-size: var(--db-font-sm);
|
|
6034
|
+
}
|
|
6035
|
+
|
|
6036
|
+
/* ---------- ER Diagram ---------- */
|
|
6037
|
+
.db-er-diagram[hidden] {
|
|
6038
|
+
display: none !important;
|
|
6039
|
+
}
|
|
6040
|
+
|
|
6041
|
+
.db-er-diagram {
|
|
6042
|
+
flex: 1;
|
|
6043
|
+
display: flex;
|
|
6044
|
+
flex-direction: column;
|
|
6045
|
+
overflow: hidden;
|
|
6046
|
+
}
|
|
6047
|
+
|
|
6048
|
+
.db-er-toolbar {
|
|
6049
|
+
display: flex;
|
|
6050
|
+
gap: 4px;
|
|
6051
|
+
padding: 6px 8px;
|
|
6052
|
+
border-bottom: 1px solid var(--border);
|
|
6053
|
+
background: var(--bg-soft);
|
|
6054
|
+
flex-shrink: 0;
|
|
6055
|
+
}
|
|
6056
|
+
|
|
6057
|
+
.db-er-zoom-btn {
|
|
6058
|
+
/* uses .db-btn base */
|
|
6059
|
+
}
|
|
6060
|
+
|
|
6061
|
+
.db-er-container {
|
|
6062
|
+
flex: 1;
|
|
6063
|
+
overflow: auto;
|
|
6064
|
+
cursor: grab;
|
|
6065
|
+
background:
|
|
6066
|
+
radial-gradient(circle, var(--border) 1px, transparent 1px);
|
|
6067
|
+
background-size: 20px 20px;
|
|
6068
|
+
padding: 24px;
|
|
6069
|
+
}
|
|
6070
|
+
.db-er-container:active {
|
|
6071
|
+
cursor: grabbing;
|
|
6072
|
+
}
|
|
6073
|
+
|
|
6074
|
+
.db-er-svg-wrap {
|
|
6075
|
+
display: inline-block;
|
|
6076
|
+
min-width: 100%;
|
|
6077
|
+
}
|
|
6078
|
+
|
|
6079
|
+
.db-er-svg-wrap .mermaid svg {
|
|
6080
|
+
max-width: none !important;
|
|
6081
|
+
}
|
|
6082
|
+
|
|
6083
|
+
/* ---------- Cell Detail Panel ---------- */
|
|
6084
|
+
.db-grid-detail-panel[hidden] {
|
|
6085
|
+
display: none !important;
|
|
6086
|
+
}
|
|
6087
|
+
|
|
6088
|
+
.db-grid-detail-panel {
|
|
6089
|
+
border-top: 1px solid var(--border);
|
|
6090
|
+
background: var(--bg-soft);
|
|
6091
|
+
max-height: 200px;
|
|
6092
|
+
overflow: auto;
|
|
6093
|
+
flex-shrink: 0;
|
|
6094
|
+
}
|
|
6095
|
+
|
|
6096
|
+
.db-grid-detail-header {
|
|
6097
|
+
display: flex;
|
|
6098
|
+
align-items: center;
|
|
6099
|
+
justify-content: space-between;
|
|
6100
|
+
padding: 4px 8px;
|
|
6101
|
+
background: var(--bg-mute);
|
|
6102
|
+
border-bottom: 1px solid var(--border);
|
|
6103
|
+
font-size: var(--db-font-base);
|
|
6104
|
+
font-weight: 600;
|
|
6105
|
+
}
|
|
6106
|
+
|
|
6107
|
+
.db-grid-detail-title {
|
|
6108
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6109
|
+
}
|
|
6110
|
+
|
|
6111
|
+
.db-grid-detail-close {
|
|
6112
|
+
font-size: 14px;
|
|
6113
|
+
color: var(--fg-muted);
|
|
6114
|
+
}
|
|
6115
|
+
.db-grid-detail-close:hover {
|
|
6116
|
+
color: var(--danger);
|
|
6117
|
+
background: none;
|
|
6118
|
+
}
|
|
6119
|
+
|
|
6120
|
+
.db-grid-detail-content {
|
|
6121
|
+
padding: 8px 12px;
|
|
6122
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6123
|
+
font-size: var(--db-font-base);
|
|
6124
|
+
white-space: pre-wrap;
|
|
6125
|
+
word-break: break-word;
|
|
6126
|
+
line-height: 1.5;
|
|
6127
|
+
}
|
|
6128
|
+
.db-grid-detail-content.null {
|
|
6129
|
+
color: var(--fg-subtle);
|
|
6130
|
+
font-style: italic;
|
|
6131
|
+
}
|
|
6132
|
+
.db-grid-detail-content.blob {
|
|
6133
|
+
color: var(--fg-subtle);
|
|
6134
|
+
}
|
|
6135
|
+
|
|
6136
|
+
.db-grid-detail-json {
|
|
6137
|
+
margin: 0;
|
|
6138
|
+
font-size: var(--db-font-base);
|
|
6139
|
+
line-height: 1.4;
|
|
6140
|
+
white-space: pre-wrap;
|
|
6141
|
+
word-break: break-word;
|
|
6142
|
+
}
|
|
6143
|
+
|
|
6144
|
+
/* ---------- Export Buttons ---------- */
|
|
6145
|
+
.db-grid-export-btn {
|
|
6146
|
+
margin-left: 6px;
|
|
6147
|
+
}
|
|
6148
|
+
|
|
6149
|
+
/* ---------- Query History ---------- */
|
|
6150
|
+
.db-query-history-btn {
|
|
6151
|
+
border-radius: 6px;
|
|
6152
|
+
}
|
|
6153
|
+
|
|
6154
|
+
.db-query-history-dropdown[hidden] {
|
|
6155
|
+
display: none !important;
|
|
6156
|
+
}
|
|
6157
|
+
|
|
6158
|
+
.db-query-history-dropdown {
|
|
6159
|
+
position: absolute;
|
|
6160
|
+
z-index: 10;
|
|
6161
|
+
top: 100%;
|
|
6162
|
+
left: 0;
|
|
6163
|
+
right: 0;
|
|
6164
|
+
max-height: 250px;
|
|
6165
|
+
overflow-y: auto;
|
|
6166
|
+
background: var(--bg);
|
|
6167
|
+
border: 1px solid var(--border);
|
|
6168
|
+
border-radius: 6px;
|
|
6169
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
6170
|
+
margin-top: 4px;
|
|
6171
|
+
}
|
|
6172
|
+
|
|
6173
|
+
.db-query-history-item {
|
|
6174
|
+
padding: 6px 12px;
|
|
6175
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6176
|
+
font-size: var(--db-font-base);
|
|
6177
|
+
cursor: pointer;
|
|
6178
|
+
white-space: nowrap;
|
|
6179
|
+
overflow: hidden;
|
|
6180
|
+
text-overflow: ellipsis;
|
|
6181
|
+
border-bottom: 1px solid var(--border);
|
|
6182
|
+
}
|
|
6183
|
+
.db-query-history-item:last-child {
|
|
6184
|
+
border-bottom: none;
|
|
6185
|
+
}
|
|
6186
|
+
.db-query-history-item:hover {
|
|
6187
|
+
background: var(--accent-subtle);
|
|
6188
|
+
}
|
|
6189
|
+
|
|
6190
|
+
.db-query-history-empty {
|
|
6191
|
+
padding: 12px;
|
|
6192
|
+
color: var(--fg-muted);
|
|
6193
|
+
text-align: center;
|
|
6194
|
+
font-size: var(--db-font-base);
|
|
6195
|
+
}
|
|
6196
|
+
|
|
6197
|
+
/* ---------- Explain Button ---------- */
|
|
6198
|
+
.db-query-explain {
|
|
6199
|
+
background: var(--bg-mute);
|
|
6200
|
+
color: var(--fg);
|
|
6201
|
+
border: 1px solid var(--border);
|
|
6202
|
+
}
|
|
6203
|
+
.db-query-explain:hover {
|
|
6204
|
+
background: var(--bg-soft);
|
|
6205
|
+
}
|
|
6206
|
+
|
|
6207
|
+
/* ---------- Query Input (relative positioning for history dropdown) ---------- */
|
|
6208
|
+
.db-query-input {
|
|
6209
|
+
position: relative;
|
|
6210
|
+
}
|
|
6211
|
+
|
|
6212
|
+
/* ---------- Column Resize Handle ---------- */
|
|
6213
|
+
.db-grid-resize-handle {
|
|
6214
|
+
position: absolute;
|
|
6215
|
+
right: 0;
|
|
6216
|
+
top: 0;
|
|
6217
|
+
bottom: 0;
|
|
6218
|
+
width: 6px;
|
|
6219
|
+
cursor: col-resize;
|
|
6220
|
+
background: transparent;
|
|
6221
|
+
z-index: 1;
|
|
6222
|
+
}
|
|
6223
|
+
.db-grid-resize-handle:hover,
|
|
6224
|
+
body.db-resizing .db-grid-resize-handle {
|
|
6225
|
+
background: var(--accent);
|
|
6226
|
+
opacity: 0.5;
|
|
6227
|
+
}
|
|
6228
|
+
.db-grid-header-cell {
|
|
6229
|
+
position: relative;
|
|
6230
|
+
}
|
|
6231
|
+
body.db-resizing {
|
|
6232
|
+
cursor: col-resize !important;
|
|
6233
|
+
user-select: none;
|
|
6234
|
+
}
|
|
6235
|
+
body.db-resizing * {
|
|
6236
|
+
user-select: none !important;
|
|
6237
|
+
}
|
|
6238
|
+
|
|
6239
|
+
/* ---------- Context Menu ---------- */
|
|
6240
|
+
.db-context-menu {
|
|
6241
|
+
z-index: 100;
|
|
6242
|
+
min-width: 200px;
|
|
6243
|
+
background: var(--bg);
|
|
6244
|
+
border: 1px solid var(--border);
|
|
6245
|
+
border-radius: 6px;
|
|
6246
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
|
|
6247
|
+
padding: 4px 0;
|
|
6248
|
+
font-size: var(--db-font-md);
|
|
6249
|
+
}
|
|
6250
|
+
.db-context-menu-item {
|
|
6251
|
+
padding: 6px 14px;
|
|
6252
|
+
cursor: pointer;
|
|
6253
|
+
color: var(--fg);
|
|
6254
|
+
white-space: nowrap;
|
|
6255
|
+
}
|
|
6256
|
+
.db-context-menu-item:hover {
|
|
6257
|
+
background: var(--accent-subtle);
|
|
6258
|
+
color: var(--accent);
|
|
6259
|
+
}
|
|
6260
|
+
|
|
6261
|
+
/* ---------- Schema Section Headers ---------- */
|
|
6262
|
+
.db-schema-section-header {
|
|
6263
|
+
padding: 8px 12px 4px;
|
|
6264
|
+
font-size: var(--db-font-base);
|
|
6265
|
+
font-weight: 700;
|
|
6266
|
+
color: var(--fg-muted);
|
|
6267
|
+
text-transform: uppercase;
|
|
6268
|
+
letter-spacing: 0.04em;
|
|
6269
|
+
border-bottom: 1px solid var(--border);
|
|
6270
|
+
margin-top: 16px;
|
|
6271
|
+
}
|
|
6272
|
+
.db-schema-section-header:first-of-type {
|
|
6273
|
+
margin-top: 8px;
|
|
6274
|
+
}
|
|
6275
|
+
|
|
6276
|
+
/* ---------- Schema DDL ---------- */
|
|
6277
|
+
.db-schema-ddl-wrap {
|
|
6278
|
+
position: relative;
|
|
6279
|
+
margin: 8px 0;
|
|
6280
|
+
}
|
|
6281
|
+
.db-schema-copy-btn {
|
|
6282
|
+
position: absolute;
|
|
6283
|
+
top: 8px;
|
|
6284
|
+
right: 8px;
|
|
6285
|
+
z-index: 1;
|
|
6286
|
+
}
|
|
6287
|
+
.db-schema-ddl-pre {
|
|
6288
|
+
margin: 0;
|
|
6289
|
+
padding: 12px 14px;
|
|
6290
|
+
background: var(--bg-soft);
|
|
6291
|
+
border: 1px solid var(--border);
|
|
6292
|
+
border-radius: 6px;
|
|
6293
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6294
|
+
font-size: var(--db-font-base);
|
|
6295
|
+
line-height: 1.5;
|
|
6296
|
+
white-space: pre-wrap;
|
|
6297
|
+
word-break: break-word;
|
|
6298
|
+
overflow-x: auto;
|
|
6299
|
+
}
|
|
6300
|
+
|
|
6301
|
+
/* ---------- Schema Trigger Block ---------- */
|
|
6302
|
+
.db-schema-trigger-block {
|
|
6303
|
+
margin: 8px 0;
|
|
6304
|
+
}
|
|
6305
|
+
.db-schema-trigger-name {
|
|
6306
|
+
padding: 4px 12px;
|
|
6307
|
+
font-size: var(--db-font-base);
|
|
6308
|
+
font-weight: 600;
|
|
6309
|
+
color: var(--fg);
|
|
6310
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6311
|
+
}
|
|
6312
|
+
|
|
6313
|
+
/* ---------- Docker Notice ---------- */
|
|
6314
|
+
.db-docker-notice {
|
|
6315
|
+
display: flex;
|
|
6316
|
+
flex-direction: column;
|
|
6317
|
+
align-items: center;
|
|
6318
|
+
justify-content: center;
|
|
6319
|
+
flex: 1;
|
|
6320
|
+
padding: 48px 24px;
|
|
6321
|
+
text-align: center;
|
|
6322
|
+
color: var(--fg-muted);
|
|
6323
|
+
}
|
|
6324
|
+
.db-docker-notice-icon {
|
|
6325
|
+
font-size: 48px;
|
|
6326
|
+
margin-bottom: 12px;
|
|
6327
|
+
}
|
|
6328
|
+
.db-docker-notice h3 {
|
|
6329
|
+
font-size: 18px;
|
|
6330
|
+
color: var(--fg);
|
|
6331
|
+
margin: 0 0 8px;
|
|
6332
|
+
}
|
|
6333
|
+
.db-docker-notice p {
|
|
6334
|
+
margin: 4px 0;
|
|
6335
|
+
font-size: var(--db-font-md);
|
|
6336
|
+
max-width: 500px;
|
|
6337
|
+
}
|
|
6338
|
+
.db-docker-notice-hint {
|
|
6339
|
+
color: var(--fg-subtle);
|
|
6340
|
+
}
|
|
6341
|
+
.db-docker-notice-code {
|
|
6342
|
+
margin-top: 12px;
|
|
6343
|
+
padding: 10px 16px;
|
|
6344
|
+
background: var(--bg-soft);
|
|
6345
|
+
border: 1px solid var(--border);
|
|
6346
|
+
border-radius: 6px;
|
|
6347
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
6348
|
+
font-size: var(--db-font-base);
|
|
6349
|
+
color: var(--fg);
|
|
6350
|
+
text-align: left;
|
|
6351
|
+
max-width: 600px;
|
|
6352
|
+
overflow-x: auto;
|
|
6353
|
+
}
|
|
6354
|
+
|
|
6355
|
+
/* ---------- Query History Panel Resizer ---------- */
|
|
6356
|
+
#query-history-resizer {
|
|
6357
|
+
position: absolute;
|
|
6358
|
+
left: -3px;
|
|
6359
|
+
top: 0;
|
|
6360
|
+
bottom: 0;
|
|
6361
|
+
width: 6px;
|
|
6362
|
+
cursor: col-resize;
|
|
6363
|
+
z-index: 50;
|
|
6364
|
+
}
|
|
6365
|
+
#query-history-resizer:hover {
|
|
6366
|
+
background: var(--accent-muted);
|
|
6367
|
+
}
|
|
6368
|
+
body.db-resizing {
|
|
6369
|
+
cursor: col-resize !important;
|
|
6370
|
+
user-select: none;
|
|
6371
|
+
}
|
|
6372
|
+
|
|
6373
|
+
/* --- Global Search --- */
|
|
6374
|
+
.db-global-search {
|
|
6375
|
+
padding: 12px;
|
|
6376
|
+
overflow-y: auto;
|
|
6377
|
+
height: 100%;
|
|
6378
|
+
}
|
|
6379
|
+
.db-global-search-header {
|
|
6380
|
+
display: flex;
|
|
6381
|
+
gap: 6px;
|
|
6382
|
+
margin-bottom: 8px;
|
|
6383
|
+
}
|
|
6384
|
+
.db-global-search-input {
|
|
6385
|
+
flex: 1;
|
|
6386
|
+
padding: 6px 10px;
|
|
6387
|
+
border: 1px solid var(--border);
|
|
6388
|
+
border-radius: 4px;
|
|
6389
|
+
background: var(--bg);
|
|
6390
|
+
color: var(--fg);
|
|
6391
|
+
font-size: var(--db-font-base);
|
|
6392
|
+
}
|
|
6393
|
+
.db-global-search-btn,
|
|
6394
|
+
.db-global-search-cancel {
|
|
6395
|
+
padding: 6px 14px;
|
|
6396
|
+
border: 1px solid var(--border);
|
|
6397
|
+
border-radius: 4px;
|
|
6398
|
+
background: var(--bg-soft);
|
|
6399
|
+
color: var(--fg);
|
|
6400
|
+
cursor: pointer;
|
|
6401
|
+
font-size: var(--db-font-base);
|
|
6402
|
+
}
|
|
6403
|
+
.db-global-search-btn:hover,
|
|
6404
|
+
.db-global-search-cancel:hover {
|
|
6405
|
+
background: var(--bg-mute);
|
|
6406
|
+
}
|
|
6407
|
+
.db-global-search-options {
|
|
6408
|
+
margin-bottom: 8px;
|
|
6409
|
+
font-size: var(--db-font-base);
|
|
6410
|
+
color: var(--fg-muted);
|
|
6411
|
+
}
|
|
6412
|
+
.db-global-search-options label {
|
|
6413
|
+
cursor: pointer;
|
|
6414
|
+
display: flex;
|
|
6415
|
+
align-items: center;
|
|
6416
|
+
gap: 4px;
|
|
6417
|
+
}
|
|
6418
|
+
.db-global-search-progress {
|
|
6419
|
+
padding: 8px;
|
|
6420
|
+
color: var(--fg-muted);
|
|
6421
|
+
font-size: var(--db-font-base);
|
|
6422
|
+
}
|
|
6423
|
+
.db-search-table-section {
|
|
6424
|
+
margin-bottom: 12px;
|
|
6425
|
+
border: 1px solid var(--border);
|
|
6426
|
+
border-radius: 6px;
|
|
6427
|
+
overflow: hidden;
|
|
6428
|
+
}
|
|
6429
|
+
.db-search-table-header {
|
|
6430
|
+
padding: 6px 10px;
|
|
6431
|
+
background: var(--bg-soft);
|
|
6432
|
+
font-weight: 600;
|
|
6433
|
+
font-size: var(--db-font-base);
|
|
6434
|
+
border-bottom: 1px solid var(--border);
|
|
6435
|
+
}
|
|
6436
|
+
.db-search-hits-list {
|
|
6437
|
+
max-height: 300px;
|
|
6438
|
+
overflow-y: auto;
|
|
6439
|
+
}
|
|
6440
|
+
.db-search-hit-row {
|
|
6441
|
+
display: flex;
|
|
6442
|
+
gap: 8px;
|
|
6443
|
+
padding: 4px 10px;
|
|
6444
|
+
border-bottom: 1px solid var(--border);
|
|
6445
|
+
font-size: var(--db-font-base);
|
|
6446
|
+
align-items: baseline;
|
|
6447
|
+
}
|
|
6448
|
+
.db-search-hit-row:last-child {
|
|
6449
|
+
border-bottom: none;
|
|
6450
|
+
}
|
|
6451
|
+
.db-search-hit-col {
|
|
6452
|
+
color: var(--accent);
|
|
6453
|
+
font-weight: 500;
|
|
6454
|
+
min-width: 100px;
|
|
6455
|
+
flex-shrink: 0;
|
|
6456
|
+
}
|
|
6457
|
+
.db-search-hit-val {
|
|
6458
|
+
color: var(--fg);
|
|
6459
|
+
word-break: break-all;
|
|
6460
|
+
flex: 1;
|
|
6461
|
+
}
|
|
6462
|
+
.db-search-more {
|
|
6463
|
+
padding: 6px 10px;
|
|
6464
|
+
color: var(--fg-muted);
|
|
6465
|
+
font-style: italic;
|
|
6466
|
+
font-size: var(--db-font-base);
|
|
6467
|
+
}
|
|
6468
|
+
|
|
6469
|
+
/* --- Snapshot & Diff --- */
|
|
6470
|
+
.db-snapshot-view {
|
|
6471
|
+
padding: 12px;
|
|
6472
|
+
overflow-y: auto;
|
|
6473
|
+
height: 100%;
|
|
6474
|
+
}
|
|
6475
|
+
.db-snapshot-guide {
|
|
6476
|
+
border: 1px solid var(--border);
|
|
6477
|
+
border-radius: 6px;
|
|
6478
|
+
padding: 10px 12px;
|
|
6479
|
+
margin-bottom: 12px;
|
|
6480
|
+
background: var(--bg-soft);
|
|
6481
|
+
}
|
|
6482
|
+
.db-snapshot-guide-title {
|
|
6483
|
+
font-weight: 600;
|
|
6484
|
+
font-size: var(--db-font-base);
|
|
6485
|
+
margin-bottom: 4px;
|
|
6486
|
+
}
|
|
6487
|
+
.db-snapshot-guide-body {
|
|
6488
|
+
font-size: var(--db-font-base);
|
|
6489
|
+
color: var(--fg-muted);
|
|
6490
|
+
line-height: 1.6;
|
|
6491
|
+
}
|
|
6492
|
+
.db-snapshot-guide-note {
|
|
6493
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6494
|
+
color: var(--fg-muted);
|
|
6495
|
+
margin-top: 4px;
|
|
6496
|
+
font-style: italic;
|
|
6497
|
+
}
|
|
6498
|
+
.db-snapshot-note-field {
|
|
6499
|
+
display: flex;
|
|
6500
|
+
align-items: center;
|
|
6501
|
+
gap: 4px;
|
|
6502
|
+
flex: 1;
|
|
6503
|
+
min-width: 120px;
|
|
6504
|
+
}
|
|
6505
|
+
.db-snapshot-note-label {
|
|
6506
|
+
font-size: var(--db-font-base);
|
|
6507
|
+
color: var(--fg-muted);
|
|
6508
|
+
white-space: nowrap;
|
|
6509
|
+
font-weight: 500;
|
|
6510
|
+
}
|
|
6511
|
+
.db-snapshot-toolbar {
|
|
6512
|
+
display: flex;
|
|
6513
|
+
gap: 6px;
|
|
6514
|
+
margin-bottom: 12px;
|
|
6515
|
+
}
|
|
6516
|
+
.db-snapshot-create-btn,
|
|
6517
|
+
.db-snapshot-refresh-btn {
|
|
6518
|
+
padding: 6px 14px;
|
|
6519
|
+
border: 1px solid var(--border);
|
|
6520
|
+
border-radius: 4px;
|
|
6521
|
+
background: var(--bg-soft);
|
|
6522
|
+
color: var(--fg);
|
|
6523
|
+
cursor: pointer;
|
|
6524
|
+
font-size: var(--db-font-base);
|
|
6525
|
+
}
|
|
6526
|
+
.db-snapshot-create-btn:hover,
|
|
6527
|
+
.db-snapshot-refresh-btn:hover {
|
|
6528
|
+
background: var(--bg-mute);
|
|
6529
|
+
}
|
|
6530
|
+
.db-snapshot-table-selector {
|
|
6531
|
+
border: 1px solid var(--border);
|
|
6532
|
+
border-radius: 6px;
|
|
6533
|
+
padding: 10px;
|
|
6534
|
+
margin-bottom: 12px;
|
|
6535
|
+
background: var(--bg-soft);
|
|
6536
|
+
}
|
|
6537
|
+
.db-snapshot-table-selector-header {
|
|
6538
|
+
font-weight: 600;
|
|
6539
|
+
margin-bottom: 8px;
|
|
6540
|
+
font-size: var(--db-font-base);
|
|
6541
|
+
}
|
|
6542
|
+
.db-snapshot-table-checkboxes {
|
|
6543
|
+
display: flex;
|
|
6544
|
+
flex-wrap: wrap;
|
|
6545
|
+
gap: 4px 12px;
|
|
6546
|
+
margin-bottom: 8px;
|
|
6547
|
+
max-height: 200px;
|
|
6548
|
+
overflow-y: auto;
|
|
6549
|
+
}
|
|
6550
|
+
.db-snapshot-table-label {
|
|
6551
|
+
display: flex;
|
|
6552
|
+
align-items: center;
|
|
6553
|
+
gap: 4px;
|
|
6554
|
+
font-size: var(--db-font-base);
|
|
6555
|
+
cursor: pointer;
|
|
6556
|
+
}
|
|
6557
|
+
.db-snapshot-select-actions {
|
|
6558
|
+
display: flex;
|
|
6559
|
+
gap: 6px;
|
|
6560
|
+
align-items: center;
|
|
6561
|
+
flex-wrap: wrap;
|
|
6562
|
+
}
|
|
6563
|
+
.db-snapshot-select-actions button {
|
|
6564
|
+
padding: 4px 10px;
|
|
6565
|
+
border: 1px solid var(--border);
|
|
6566
|
+
border-radius: 4px;
|
|
6567
|
+
background: var(--bg);
|
|
6568
|
+
color: var(--fg);
|
|
6569
|
+
cursor: pointer;
|
|
6570
|
+
font-size: var(--db-font-base);
|
|
6571
|
+
}
|
|
6572
|
+
.db-snapshot-select-actions button:hover {
|
|
6573
|
+
background: var(--bg-mute);
|
|
6574
|
+
}
|
|
6575
|
+
.db-snapshot-note-input,
|
|
6576
|
+
.db-snapshot-diff-note-input {
|
|
6577
|
+
padding: 4px 8px;
|
|
6578
|
+
border: 1px solid var(--border);
|
|
6579
|
+
border-radius: 4px;
|
|
6580
|
+
background: var(--bg);
|
|
6581
|
+
color: var(--fg);
|
|
6582
|
+
font-size: var(--db-font-base);
|
|
6583
|
+
flex: 1;
|
|
6584
|
+
min-width: 120px;
|
|
6585
|
+
}
|
|
6586
|
+
.db-snapshot-confirm-btn {
|
|
6587
|
+
background: var(--accent) !important;
|
|
6588
|
+
color: #fff !important;
|
|
6589
|
+
border-color: var(--accent) !important;
|
|
6590
|
+
}
|
|
6591
|
+
.db-snapshot-section-title {
|
|
6592
|
+
font-size: calc(var(--db-font-base) + 1px);
|
|
6593
|
+
font-weight: 600;
|
|
6594
|
+
margin: 0 0 8px;
|
|
6595
|
+
color: var(--fg);
|
|
6596
|
+
}
|
|
6597
|
+
.db-snapshot-empty {
|
|
6598
|
+
color: var(--fg-muted);
|
|
6599
|
+
font-style: italic;
|
|
6600
|
+
padding: 12px 0;
|
|
6601
|
+
font-size: var(--db-font-base);
|
|
6602
|
+
}
|
|
6603
|
+
.db-snapshot-item {
|
|
6604
|
+
display: flex;
|
|
6605
|
+
justify-content: space-between;
|
|
6606
|
+
align-items: flex-start;
|
|
6607
|
+
padding: 8px 10px;
|
|
6608
|
+
border: 1px solid var(--border);
|
|
6609
|
+
border-radius: 6px;
|
|
6610
|
+
margin-bottom: 6px;
|
|
6611
|
+
gap: 8px;
|
|
6612
|
+
}
|
|
6613
|
+
.db-snapshot-info {
|
|
6614
|
+
display: flex;
|
|
6615
|
+
flex-wrap: wrap;
|
|
6616
|
+
gap: 6px 12px;
|
|
6617
|
+
align-items: center;
|
|
6618
|
+
font-size: var(--db-font-base);
|
|
6619
|
+
flex: 1;
|
|
6620
|
+
}
|
|
6621
|
+
.db-snapshot-id {
|
|
6622
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
6623
|
+
color: var(--accent);
|
|
6624
|
+
}
|
|
6625
|
+
.db-snapshot-date {
|
|
6626
|
+
color: var(--fg-muted);
|
|
6627
|
+
}
|
|
6628
|
+
.db-snapshot-status {
|
|
6629
|
+
padding: 1px 6px;
|
|
6630
|
+
border-radius: 10px;
|
|
6631
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6632
|
+
}
|
|
6633
|
+
.db-snapshot-status.done {
|
|
6634
|
+
background: color-mix(in srgb, var(--success) 15%, var(--bg));
|
|
6635
|
+
color: var(--success);
|
|
6636
|
+
}
|
|
6637
|
+
.db-snapshot-status.running {
|
|
6638
|
+
background: color-mix(in srgb, var(--warning, #d29922) 15%, var(--bg));
|
|
6639
|
+
color: var(--warning, #d29922);
|
|
6640
|
+
}
|
|
6641
|
+
.db-snapshot-status.error {
|
|
6642
|
+
background: color-mix(in srgb, var(--danger) 15%, var(--bg));
|
|
6643
|
+
color: var(--danger);
|
|
6644
|
+
}
|
|
6645
|
+
.db-snapshot-tables-count {
|
|
6646
|
+
color: var(--fg-muted);
|
|
6647
|
+
}
|
|
6648
|
+
.db-snapshot-note {
|
|
6649
|
+
width: 100%;
|
|
6650
|
+
color: var(--fg-muted);
|
|
6651
|
+
font-style: italic;
|
|
6652
|
+
}
|
|
6653
|
+
.db-snapshot-actions {
|
|
6654
|
+
display: flex;
|
|
6655
|
+
gap: 4px;
|
|
6656
|
+
flex-shrink: 0;
|
|
6657
|
+
}
|
|
6658
|
+
.db-snapshot-actions button {
|
|
6659
|
+
padding: 3px 8px;
|
|
6660
|
+
border: 1px solid var(--border);
|
|
6661
|
+
border-radius: 4px;
|
|
6662
|
+
background: var(--bg);
|
|
6663
|
+
color: var(--fg);
|
|
6664
|
+
cursor: pointer;
|
|
6665
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6666
|
+
}
|
|
6667
|
+
.db-snapshot-actions button:hover {
|
|
6668
|
+
background: var(--bg-mute);
|
|
6669
|
+
}
|
|
6670
|
+
.db-snapshot-diff-create {
|
|
6671
|
+
display: flex;
|
|
6672
|
+
align-items: center;
|
|
6673
|
+
gap: 6px;
|
|
6674
|
+
padding: 10px;
|
|
6675
|
+
border: 1px solid var(--border);
|
|
6676
|
+
border-radius: 6px;
|
|
6677
|
+
margin-top: 10px;
|
|
6678
|
+
flex-wrap: wrap;
|
|
6679
|
+
font-size: var(--db-font-base);
|
|
6680
|
+
}
|
|
6681
|
+
.db-snapshot-diff-select {
|
|
6682
|
+
padding: 4px 8px;
|
|
6683
|
+
border: 1px solid var(--border);
|
|
6684
|
+
border-radius: 4px;
|
|
6685
|
+
background: var(--bg);
|
|
6686
|
+
color: var(--fg);
|
|
6687
|
+
font-size: var(--db-font-base);
|
|
6688
|
+
}
|
|
6689
|
+
.db-snapshot-diff-btn {
|
|
6690
|
+
padding: 4px 14px;
|
|
6691
|
+
border: 1px solid var(--accent);
|
|
6692
|
+
border-radius: 4px;
|
|
6693
|
+
background: var(--accent);
|
|
6694
|
+
color: #fff;
|
|
6695
|
+
cursor: pointer;
|
|
6696
|
+
font-size: var(--db-font-base);
|
|
6697
|
+
}
|
|
6698
|
+
.db-snapshot-diff-btn:hover {
|
|
6699
|
+
opacity: 0.9;
|
|
6700
|
+
}
|
|
6701
|
+
.db-snapshot-diff-section {
|
|
6702
|
+
margin-top: 16px;
|
|
6703
|
+
}
|
|
6704
|
+
.db-snapshot-diff-item {
|
|
6705
|
+
display: flex;
|
|
6706
|
+
justify-content: space-between;
|
|
6707
|
+
align-items: flex-start;
|
|
6708
|
+
padding: 8px 10px;
|
|
6709
|
+
border: 1px solid var(--border);
|
|
6710
|
+
border-radius: 6px;
|
|
6711
|
+
margin-bottom: 6px;
|
|
6712
|
+
gap: 8px;
|
|
6713
|
+
}
|
|
6714
|
+
.db-snapshot-diff-info {
|
|
6715
|
+
display: flex;
|
|
6716
|
+
flex-wrap: wrap;
|
|
6717
|
+
gap: 6px 12px;
|
|
6718
|
+
align-items: center;
|
|
6719
|
+
font-size: var(--db-font-base);
|
|
6720
|
+
flex: 1;
|
|
6721
|
+
}
|
|
6722
|
+
.db-snapshot-diff-id {
|
|
6723
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
6724
|
+
color: var(--accent);
|
|
6725
|
+
}
|
|
6726
|
+
.db-snapshot-diff-date {
|
|
6727
|
+
color: var(--fg-muted);
|
|
6728
|
+
}
|
|
6729
|
+
.db-snapshot-diff-status {
|
|
6730
|
+
padding: 1px 6px;
|
|
6731
|
+
border-radius: 10px;
|
|
6732
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6733
|
+
}
|
|
6734
|
+
.db-snapshot-diff-status.done {
|
|
6735
|
+
background: color-mix(in srgb, var(--success) 15%, var(--bg));
|
|
6736
|
+
color: var(--success);
|
|
6737
|
+
}
|
|
6738
|
+
.db-snapshot-diff-status.running {
|
|
6739
|
+
background: color-mix(in srgb, var(--warning, #d29922) 15%, var(--bg));
|
|
6740
|
+
color: var(--warning, #d29922);
|
|
6741
|
+
}
|
|
6742
|
+
.db-snapshot-diff-status.error {
|
|
6743
|
+
background: color-mix(in srgb, var(--danger) 15%, var(--bg));
|
|
6744
|
+
color: var(--danger);
|
|
6745
|
+
}
|
|
6746
|
+
.db-snapshot-diff-range {
|
|
6747
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
6748
|
+
color: var(--fg-muted);
|
|
6749
|
+
}
|
|
6750
|
+
.db-snapshot-diff-note-text {
|
|
6751
|
+
width: 100%;
|
|
6752
|
+
color: var(--fg-muted);
|
|
6753
|
+
font-style: italic;
|
|
6754
|
+
}
|
|
6755
|
+
.db-snapshot-diff-actions {
|
|
6756
|
+
display: flex;
|
|
6757
|
+
gap: 4px;
|
|
6758
|
+
flex-shrink: 0;
|
|
6759
|
+
}
|
|
6760
|
+
.db-snapshot-diff-actions button {
|
|
6761
|
+
padding: 3px 8px;
|
|
6762
|
+
border: 1px solid var(--border);
|
|
6763
|
+
border-radius: 4px;
|
|
6764
|
+
background: var(--bg);
|
|
6765
|
+
color: var(--fg);
|
|
6766
|
+
cursor: pointer;
|
|
6767
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6768
|
+
}
|
|
6769
|
+
.db-snapshot-diff-actions button:hover {
|
|
6770
|
+
background: var(--bg-mute);
|
|
6771
|
+
}
|
|
6772
|
+
.db-snapshot-back-btn {
|
|
6773
|
+
padding: 4px 10px;
|
|
6774
|
+
border: 1px solid var(--border);
|
|
6775
|
+
border-radius: 4px;
|
|
6776
|
+
background: var(--bg);
|
|
6777
|
+
color: var(--fg);
|
|
6778
|
+
cursor: pointer;
|
|
6779
|
+
font-size: var(--db-font-base);
|
|
6780
|
+
margin-bottom: 8px;
|
|
6781
|
+
}
|
|
6782
|
+
.db-snapshot-back-btn:hover {
|
|
6783
|
+
background: var(--bg-mute);
|
|
6784
|
+
}
|
|
6785
|
+
.db-snapshot-diff-summary {
|
|
6786
|
+
padding: 8px 0;
|
|
6787
|
+
color: var(--fg-muted);
|
|
6788
|
+
font-size: var(--db-font-base);
|
|
6789
|
+
}
|
|
6790
|
+
.db-snapshot-no-changes {
|
|
6791
|
+
padding: 12px 0;
|
|
6792
|
+
color: var(--fg-muted);
|
|
6793
|
+
font-style: italic;
|
|
6794
|
+
font-size: var(--db-font-base);
|
|
6795
|
+
}
|
|
6796
|
+
.db-snapshot-diff-table {
|
|
6797
|
+
border: 1px solid var(--border);
|
|
6798
|
+
border-radius: 6px;
|
|
6799
|
+
margin-bottom: 8px;
|
|
6800
|
+
overflow: hidden;
|
|
6801
|
+
}
|
|
6802
|
+
.db-snapshot-diff-table-header {
|
|
6803
|
+
display: flex;
|
|
6804
|
+
justify-content: space-between;
|
|
6805
|
+
align-items: center;
|
|
6806
|
+
padding: 8px 10px;
|
|
6807
|
+
background: var(--bg-soft);
|
|
6808
|
+
font-size: var(--db-font-base);
|
|
6809
|
+
cursor: pointer;
|
|
6810
|
+
}
|
|
6811
|
+
.db-snapshot-diff-table-header:hover {
|
|
6812
|
+
background: var(--bg-mute);
|
|
6813
|
+
}
|
|
6814
|
+
.db-snapshot-diff-table-name {
|
|
6815
|
+
font-weight: 600;
|
|
6816
|
+
}
|
|
6817
|
+
.db-snapshot-diff-table-stats {
|
|
6818
|
+
color: var(--fg-muted);
|
|
6819
|
+
}
|
|
6820
|
+
.db-snapshot-diff-rows-container {
|
|
6821
|
+
max-height: 400px;
|
|
6822
|
+
overflow-y: auto;
|
|
6823
|
+
}
|
|
6824
|
+
.db-snapshot-diff-row {
|
|
6825
|
+
padding: 6px 10px;
|
|
6826
|
+
border-bottom: 1px solid var(--border);
|
|
6827
|
+
font-size: var(--db-font-base);
|
|
6828
|
+
}
|
|
6829
|
+
.db-snapshot-diff-row:last-child {
|
|
6830
|
+
border-bottom: none;
|
|
6831
|
+
}
|
|
6832
|
+
.db-snapshot-diff-row.inserted {
|
|
6833
|
+
background: var(--diff-addition-bg, rgba(46, 160, 67, 0.05));
|
|
6834
|
+
}
|
|
6835
|
+
.db-snapshot-diff-row.deleted {
|
|
6836
|
+
background: var(--diff-deletion-bg, rgba(248, 81, 73, 0.05));
|
|
6837
|
+
}
|
|
6838
|
+
.db-snapshot-diff-row.updated {
|
|
6839
|
+
background: var(--diff-change-bg, rgba(210, 153, 34, 0.05));
|
|
6840
|
+
}
|
|
6841
|
+
.db-snapshot-diff-type {
|
|
6842
|
+
display: inline-block;
|
|
6843
|
+
padding: 1px 5px;
|
|
6844
|
+
border-radius: 3px;
|
|
6845
|
+
font-size: calc(var(--db-font-base) - 2px);
|
|
6846
|
+
font-weight: 600;
|
|
6847
|
+
margin-right: 6px;
|
|
6848
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
6849
|
+
}
|
|
6850
|
+
.db-snapshot-diff-type.inserted {
|
|
6851
|
+
background: color-mix(in srgb, var(--success) 15%, var(--bg));
|
|
6852
|
+
color: var(--success);
|
|
6853
|
+
}
|
|
6854
|
+
.db-snapshot-diff-type.deleted {
|
|
6855
|
+
background: color-mix(in srgb, var(--danger) 15%, var(--bg));
|
|
6856
|
+
color: var(--danger);
|
|
6857
|
+
}
|
|
6858
|
+
.db-snapshot-diff-type.updated {
|
|
6859
|
+
background: color-mix(in srgb, var(--warning, #d29922) 15%, var(--bg));
|
|
6860
|
+
color: var(--warning, #d29922);
|
|
6861
|
+
}
|
|
6862
|
+
.db-snapshot-diff-key {
|
|
6863
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
6864
|
+
color: var(--fg-muted);
|
|
6865
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6866
|
+
}
|
|
6867
|
+
.db-snapshot-diff-changes,
|
|
6868
|
+
.db-snapshot-diff-values {
|
|
6869
|
+
margin-top: 4px;
|
|
6870
|
+
padding-left: 16px;
|
|
6871
|
+
}
|
|
6872
|
+
.db-snapshot-diff-change-row,
|
|
6873
|
+
.db-snapshot-diff-value-entry {
|
|
6874
|
+
margin-bottom: 2px;
|
|
6875
|
+
font-size: calc(var(--db-font-base) - 1px);
|
|
6876
|
+
display: block;
|
|
6877
|
+
}
|
|
6878
|
+
.db-snapshot-diff-change-row .col-name,
|
|
6879
|
+
.db-snapshot-diff-value-entry .col-name {
|
|
6880
|
+
color: var(--accent);
|
|
6881
|
+
font-weight: 500;
|
|
6882
|
+
}
|
|
6883
|
+
.db-snapshot-diff-change-row .old-val,
|
|
6884
|
+
.db-snapshot-diff-value-entry .old-val {
|
|
6885
|
+
color: var(--danger);
|
|
6886
|
+
text-decoration: line-through;
|
|
6887
|
+
}
|
|
6888
|
+
.db-snapshot-diff-change-row .new-val,
|
|
6889
|
+
.db-snapshot-diff-value-entry .new-val {
|
|
6890
|
+
color: var(--success);
|
|
6891
|
+
}
|
|
6892
|
+
.db-snapshot-diff-more {
|
|
6893
|
+
padding: 6px 10px;
|
|
6894
|
+
color: var(--fg-muted);
|
|
6895
|
+
font-style: italic;
|
|
6896
|
+
font-size: var(--db-font-base);
|
|
6897
|
+
}
|
|
6898
|
+
.db-snapshot-loading,
|
|
6899
|
+
.db-snapshot-error {
|
|
6900
|
+
padding: 12px 10px;
|
|
6901
|
+
color: var(--fg-muted);
|
|
6902
|
+
font-size: var(--db-font-base);
|
|
6903
|
+
}
|
|
6904
|
+
|
|
6905
|
+
/* Diff grid table */
|
|
6906
|
+
.db-snap-diff-grid {
|
|
6907
|
+
width: 100%;
|
|
6908
|
+
border-collapse: collapse;
|
|
6909
|
+
font-size: var(--db-font-base);
|
|
6910
|
+
table-layout: auto;
|
|
6911
|
+
}
|
|
6912
|
+
.db-snap-diff-grid th {
|
|
6913
|
+
position: sticky;
|
|
6914
|
+
top: 0;
|
|
6915
|
+
background: var(--bg-soft);
|
|
6916
|
+
border: 1px solid var(--border);
|
|
6917
|
+
padding: 4px 8px;
|
|
6918
|
+
font-weight: 600;
|
|
6919
|
+
text-align: left;
|
|
6920
|
+
white-space: nowrap;
|
|
6921
|
+
z-index: 1;
|
|
6922
|
+
}
|
|
6923
|
+
.db-snap-diff-grid td {
|
|
6924
|
+
border: 1px solid var(--border);
|
|
6925
|
+
padding: 3px 8px;
|
|
6926
|
+
max-width: 300px;
|
|
6927
|
+
overflow: hidden;
|
|
6928
|
+
text-overflow: ellipsis;
|
|
6929
|
+
white-space: nowrap;
|
|
6930
|
+
}
|
|
6931
|
+
.db-snap-diff-grid tr.snap-diff-add {
|
|
6932
|
+
background: var(--diff-add-bg);
|
|
6933
|
+
}
|
|
6934
|
+
.db-snap-diff-grid tr.snap-diff-del {
|
|
6935
|
+
background: var(--diff-del-bg);
|
|
6936
|
+
}
|
|
6937
|
+
.db-snap-diff-grid .snap-diff-type-cell {
|
|
6938
|
+
font-weight: 600;
|
|
6939
|
+
white-space: nowrap;
|
|
6940
|
+
color: var(--fg-muted);
|
|
6941
|
+
background: var(--bg-soft);
|
|
6942
|
+
text-align: center;
|
|
6943
|
+
min-width: 50px;
|
|
6944
|
+
}
|
|
6945
|
+
.db-snap-diff-grid .snap-diff-changed-cell {
|
|
6946
|
+
font-weight: 600;
|
|
6947
|
+
}
|
|
6948
|
+
|
|
6949
|
+
/* Inline dialog (replaces confirm/prompt) */
|
|
6950
|
+
.db-snapshot-inline-dialog {
|
|
6951
|
+
display: flex;
|
|
6952
|
+
gap: 6px;
|
|
6953
|
+
padding: 6px 10px;
|
|
6954
|
+
border: 1px solid var(--accent);
|
|
6955
|
+
border-radius: 6px;
|
|
6956
|
+
margin-bottom: 6px;
|
|
6957
|
+
background: var(--bg-soft);
|
|
6958
|
+
align-items: center;
|
|
6959
|
+
}
|