@in-the-loop-labs/pair-review 1.0.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/LICENSE +674 -0
- package/README.md +371 -0
- package/bin/git-diff-lines +146 -0
- package/bin/pair-review.js +49 -0
- package/package.json +71 -0
- package/public/css/ai-summary-modal.css +183 -0
- package/public/css/pr.css +8698 -0
- package/public/css/repo-settings.css +891 -0
- package/public/css/styles.css +479 -0
- package/public/favicon.png +0 -0
- package/public/index.html +1104 -0
- package/public/js/components/AIPanel.js +1639 -0
- package/public/js/components/AISummaryModal.js +278 -0
- package/public/js/components/AnalysisConfigModal.js +684 -0
- package/public/js/components/ConfirmDialog.js +227 -0
- package/public/js/components/PreviewModal.js +344 -0
- package/public/js/components/ProgressModal.js +678 -0
- package/public/js/components/ReviewModal.js +531 -0
- package/public/js/components/SplitButton.js +382 -0
- package/public/js/components/StatusIndicator.js +265 -0
- package/public/js/components/SuggestionNavigator.js +489 -0
- package/public/js/components/Toast.js +166 -0
- package/public/js/local.js +1580 -0
- package/public/js/modules/analysis-history.js +940 -0
- package/public/js/modules/comment-manager.js +643 -0
- package/public/js/modules/diff-renderer.js +585 -0
- package/public/js/modules/file-comment-manager.js +1242 -0
- package/public/js/modules/gap-coordinates.js +190 -0
- package/public/js/modules/hunk-parser.js +358 -0
- package/public/js/modules/line-tracker.js +386 -0
- package/public/js/modules/panel-resizer.js +228 -0
- package/public/js/modules/storage-cleanup.js +36 -0
- package/public/js/modules/suggestion-manager.js +692 -0
- package/public/js/pr.js +3503 -0
- package/public/js/repo-settings.js +691 -0
- package/public/js/utils/file-order.js +87 -0
- package/public/js/utils/markdown.js +97 -0
- package/public/js/utils/suggestion-ui.js +55 -0
- package/public/js/utils/tier-icons.js +25 -0
- package/public/local.html +460 -0
- package/public/pr.html +329 -0
- package/public/repo-settings.html +243 -0
- package/src/ai/analyzer.js +2592 -0
- package/src/ai/claude-cli.js +153 -0
- package/src/ai/claude-provider.js +261 -0
- package/src/ai/codex-provider.js +361 -0
- package/src/ai/copilot-provider.js +345 -0
- package/src/ai/gemini-provider.js +375 -0
- package/src/ai/index.js +47 -0
- package/src/ai/prompts/baseline/_meta.json +14 -0
- package/src/ai/prompts/baseline/level1/balanced.js +239 -0
- package/src/ai/prompts/baseline/level1/fast.js +194 -0
- package/src/ai/prompts/baseline/level1/thorough.js +319 -0
- package/src/ai/prompts/baseline/level2/balanced.js +248 -0
- package/src/ai/prompts/baseline/level2/fast.js +201 -0
- package/src/ai/prompts/baseline/level2/thorough.js +367 -0
- package/src/ai/prompts/baseline/level3/balanced.js +280 -0
- package/src/ai/prompts/baseline/level3/fast.js +220 -0
- package/src/ai/prompts/baseline/level3/thorough.js +459 -0
- package/src/ai/prompts/baseline/orchestration/balanced.js +259 -0
- package/src/ai/prompts/baseline/orchestration/fast.js +213 -0
- package/src/ai/prompts/baseline/orchestration/thorough.js +446 -0
- package/src/ai/prompts/config.js +52 -0
- package/src/ai/prompts/index.js +267 -0
- package/src/ai/prompts/shared/diff-instructions.js +50 -0
- package/src/ai/prompts/shared/output-schema.js +179 -0
- package/src/ai/prompts/shared/valid-files.js +37 -0
- package/src/ai/provider.js +260 -0
- package/src/config.js +139 -0
- package/src/database.js +2284 -0
- package/src/git/gitattributes.js +207 -0
- package/src/git/worktree.js +688 -0
- package/src/github/client.js +893 -0
- package/src/github/parser.js +247 -0
- package/src/local-review.js +691 -0
- package/src/main.js +987 -0
- package/src/routes/analysis.js +897 -0
- package/src/routes/comments.js +534 -0
- package/src/routes/config.js +250 -0
- package/src/routes/local.js +1728 -0
- package/src/routes/pr.js +1164 -0
- package/src/routes/shared.js +218 -0
- package/src/routes/worktrees.js +500 -0
- package/src/server.js +295 -0
- package/src/utils/diff-annotator.js +414 -0
- package/src/utils/instructions.js +33 -0
- package/src/utils/json-extractor.js +107 -0
- package/src/utils/line-validation.js +183 -0
- package/src/utils/logger.js +142 -0
- package/src/utils/paths.js +161 -0
- package/src/utils/stats-calculator.js +86 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* Light theme colors */
|
|
3
|
+
--color-bg-primary: #ffffff;
|
|
4
|
+
--color-bg-secondary: #f6f8fa;
|
|
5
|
+
--color-bg-tertiary: #f3f4f6;
|
|
6
|
+
--color-bg-overlay: rgba(0, 0, 0, 0.5);
|
|
7
|
+
|
|
8
|
+
--color-text-primary: #24292f;
|
|
9
|
+
--color-text-secondary: #57606a;
|
|
10
|
+
--color-text-tertiary: #656d76;
|
|
11
|
+
--color-text-link: #0969da;
|
|
12
|
+
|
|
13
|
+
--color-border-primary: #d1d9e0;
|
|
14
|
+
--color-border-secondary: #e1e4e8;
|
|
15
|
+
|
|
16
|
+
--color-accent-primary: #0969da;
|
|
17
|
+
--color-accent-hover: #0860ca;
|
|
18
|
+
--color-accent-emphasis: #1a8754;
|
|
19
|
+
--color-accent-emphasis-hover: #157347;
|
|
20
|
+
--color-accent-light: rgba(9, 105, 218, 0.1);
|
|
21
|
+
--color-accent-lighter: rgba(9, 105, 218, 0.05);
|
|
22
|
+
|
|
23
|
+
--color-danger: #d1242f;
|
|
24
|
+
--color-danger-hover: #b91c1c;
|
|
25
|
+
|
|
26
|
+
--color-diff-addition: #e6ffec;
|
|
27
|
+
--color-diff-deletion: #ffebe9;
|
|
28
|
+
--color-diff-addition-num: #ccffd8;
|
|
29
|
+
--color-diff-deletion-num: #ffd7d5;
|
|
30
|
+
|
|
31
|
+
--color-warning-bg: #fffae6;
|
|
32
|
+
--color-warning-border: #ffc552;
|
|
33
|
+
--color-warning-text: #7d4e00;
|
|
34
|
+
|
|
35
|
+
--color-selection: #fff5b1;
|
|
36
|
+
--color-selection-num: #ffeb3b;
|
|
37
|
+
|
|
38
|
+
--color-shadow: rgba(27, 31, 36, 0.04);
|
|
39
|
+
--color-shadow-large: rgba(0, 0, 0, 0.3);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-theme="dark"] {
|
|
43
|
+
/* Dark theme colors */
|
|
44
|
+
--color-bg-primary: #0d1117;
|
|
45
|
+
--color-bg-secondary: #161b22;
|
|
46
|
+
--color-bg-tertiary: #1c2128;
|
|
47
|
+
--color-bg-overlay: rgba(0, 0, 0, 0.7);
|
|
48
|
+
|
|
49
|
+
--color-text-primary: #c9d1d9;
|
|
50
|
+
--color-text-secondary: #8b949e;
|
|
51
|
+
--color-text-tertiary: #6e7681;
|
|
52
|
+
--color-text-link: #58a6ff;
|
|
53
|
+
|
|
54
|
+
--color-border-primary: #30363d;
|
|
55
|
+
--color-border-secondary: #21262d;
|
|
56
|
+
|
|
57
|
+
--color-accent-primary: #58a6ff;
|
|
58
|
+
--color-accent-hover: #1f6feb;
|
|
59
|
+
--color-accent-emphasis: #238636;
|
|
60
|
+
--color-accent-emphasis-hover: #2ea043;
|
|
61
|
+
--color-accent-light: rgba(88, 166, 255, 0.15);
|
|
62
|
+
--color-accent-lighter: rgba(88, 166, 255, 0.08);
|
|
63
|
+
|
|
64
|
+
--color-danger: #f85149;
|
|
65
|
+
--color-danger-hover: #da3633;
|
|
66
|
+
|
|
67
|
+
--color-diff-addition: #1c2e20;
|
|
68
|
+
--color-diff-deletion: #3d1e1e;
|
|
69
|
+
--color-diff-addition-num: #1e3a23;
|
|
70
|
+
--color-diff-deletion-num: #4d1e1e;
|
|
71
|
+
|
|
72
|
+
--color-warning-bg: #3d2e00;
|
|
73
|
+
--color-warning-border: #9e6a03;
|
|
74
|
+
--color-warning-text: #e3b341;
|
|
75
|
+
|
|
76
|
+
--color-selection: #3d3300;
|
|
77
|
+
--color-selection-num: #4d4000;
|
|
78
|
+
|
|
79
|
+
--color-shadow: rgba(0, 0, 0, 0.3);
|
|
80
|
+
--color-shadow-large: rgba(0, 0, 0, 0.5);
|
|
81
|
+
|
|
82
|
+
/* Syntax highlighting colors */
|
|
83
|
+
--syntax-blue: #a5d6ff;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Diff2html overrides and custom styles */
|
|
87
|
+
.d2h-wrapper {
|
|
88
|
+
font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.d2h-file-header {
|
|
92
|
+
background: var(--color-bg-secondary);
|
|
93
|
+
padding: 10px 16px;
|
|
94
|
+
font-size: 14px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.d2h-code-line {
|
|
98
|
+
position: relative;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.d2h-code-linenumber {
|
|
102
|
+
position: relative;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Clean, minimal diff2html styling */
|
|
106
|
+
|
|
107
|
+
/* Simple green for additions - entire line only */
|
|
108
|
+
.d2h-ins,
|
|
109
|
+
.d2h-ins .d2h-code-line-ctn,
|
|
110
|
+
.d2h-ins .d2h-code-line,
|
|
111
|
+
tr.d2h-ins,
|
|
112
|
+
tr.d2h-ins td {
|
|
113
|
+
background: var(--color-diff-addition) !important;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Simple red for deletions - entire line only */
|
|
117
|
+
.d2h-del,
|
|
118
|
+
.d2h-del .d2h-code-line-ctn,
|
|
119
|
+
.d2h-del .d2h-code-line,
|
|
120
|
+
tr.d2h-del,
|
|
121
|
+
tr.d2h-del td {
|
|
122
|
+
background: var(--color-diff-deletion) !important;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Context lines (unchanged code) - pure white */
|
|
126
|
+
.d2h-cntx,
|
|
127
|
+
.d2h-cntx .d2h-code-line-ctn,
|
|
128
|
+
.d2h-code-line:not(.d2h-ins):not(.d2h-del) {
|
|
129
|
+
background: var(--color-bg-primary) !important;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Remove ALL inline highlighting and character-level changes */
|
|
133
|
+
.d2h-code-line ins,
|
|
134
|
+
.d2h-code-line del,
|
|
135
|
+
.d2h-ins ins,
|
|
136
|
+
.d2h-del ins,
|
|
137
|
+
.d2h-code-line-ctn ins,
|
|
138
|
+
.d2h-code-line-ctn del,
|
|
139
|
+
.d2h-change-inner,
|
|
140
|
+
.d2h-change-inner-highlight,
|
|
141
|
+
mark.d2h-code-line-prefix,
|
|
142
|
+
mark.d2h-code-line-ctn {
|
|
143
|
+
background: transparent !important;
|
|
144
|
+
background-color: transparent !important;
|
|
145
|
+
text-decoration: none !important;
|
|
146
|
+
font-weight: normal !important;
|
|
147
|
+
color: inherit !important;
|
|
148
|
+
border: none !important;
|
|
149
|
+
display: inline !important;
|
|
150
|
+
padding: 0 !important;
|
|
151
|
+
margin: 0 !important;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* Ensure the line backgrounds stay consistent */
|
|
155
|
+
.d2h-ins .d2h-code-line-ctn * {
|
|
156
|
+
background: transparent !important;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.d2h-del .d2h-code-line-ctn * {
|
|
160
|
+
background: transparent !important;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Remove all borders and shadows for cleaner look */
|
|
164
|
+
.d2h-file-wrapper {
|
|
165
|
+
border: none !important;
|
|
166
|
+
box-shadow: none !important;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.d2h-diff-table {
|
|
170
|
+
border: none !important;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.d2h-file-wrapper .d2h-diff-tbody tr {
|
|
174
|
+
border: none !important;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Clean file headers */
|
|
178
|
+
.d2h-file-header {
|
|
179
|
+
background: var(--color-bg-secondary) !important;
|
|
180
|
+
border-bottom: 1px solid var(--color-border-secondary) !important;
|
|
181
|
+
padding: 12px 16px !important;
|
|
182
|
+
font-weight: 600 !important;
|
|
183
|
+
border-radius: 6px 6px 0 0 !important;
|
|
184
|
+
width: 100% !important;
|
|
185
|
+
box-sizing: border-box !important;
|
|
186
|
+
overflow: visible !important;
|
|
187
|
+
display: flex !important;
|
|
188
|
+
justify-content: space-between !important;
|
|
189
|
+
align-items: center !important;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.d2h-file-name {
|
|
193
|
+
display: inline-block !important;
|
|
194
|
+
word-wrap: break-word !important;
|
|
195
|
+
overflow-wrap: break-word !important;
|
|
196
|
+
word-break: break-word !important;
|
|
197
|
+
font-size: 14px !important;
|
|
198
|
+
max-width: calc(100% - 50px) !important;
|
|
199
|
+
width: auto !important;
|
|
200
|
+
white-space: normal !important;
|
|
201
|
+
line-height: 1.4 !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Ensure diff2html containers don't have unwanted borders */
|
|
205
|
+
.d2h-file-wrapper {
|
|
206
|
+
border: none;
|
|
207
|
+
width: 100%;
|
|
208
|
+
overflow: visible !important;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.d2h-file-side-diff {
|
|
212
|
+
border: none;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* Remove line borders and fix spacing */
|
|
216
|
+
.d2h-code-line-prefix,
|
|
217
|
+
.d2h-code-line-ctn {
|
|
218
|
+
border: none !important;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* Fix table cell spacing - remove ALL padding first */
|
|
222
|
+
.d2h-diff-table td {
|
|
223
|
+
padding: 0 !important;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* Then add back minimal spacing where needed */
|
|
227
|
+
.d2h-code-line-ctn {
|
|
228
|
+
padding-left: 10px !important; /* Small buffer between line numbers and code */
|
|
229
|
+
padding-right: 10px !important;
|
|
230
|
+
white-space: pre-wrap !important; /* Preserve whitespace but allow wrapping for long lines */
|
|
231
|
+
word-wrap: anywhere !important;
|
|
232
|
+
overflow-wrap: anywhere !important;
|
|
233
|
+
font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace !important;
|
|
234
|
+
font-size: 12px !important;
|
|
235
|
+
tab-size: 4 !important; /* Ensure tabs display correctly */
|
|
236
|
+
text-align: left !important; /* Force left alignment for code content */
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Compact line number display */
|
|
240
|
+
.d2h-code-linenumber {
|
|
241
|
+
padding: 0 8px !important;
|
|
242
|
+
border-right: 1px solid var(--color-border-secondary) !important;
|
|
243
|
+
text-align: right !important; /* Ensure line numbers are right-aligned */
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Remove any empty table cells */
|
|
247
|
+
.d2h-diff-table td:empty {
|
|
248
|
+
display: none !important;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Collapse borders and spacing */
|
|
252
|
+
.d2h-diff-table {
|
|
253
|
+
border-collapse: collapse !important;
|
|
254
|
+
border-spacing: 0 !important;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/* Clean unified diff table structure */
|
|
258
|
+
.d2h-diff-table {
|
|
259
|
+
width: 100% !important;
|
|
260
|
+
border-collapse: collapse !important;
|
|
261
|
+
font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace !important;
|
|
262
|
+
font-size: 12px !important;
|
|
263
|
+
table-layout: fixed !important;
|
|
264
|
+
text-align: left !important; /* Ensure table content is left-aligned */
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.d2h-diff-tbody td.d2h-code-linenumber,
|
|
268
|
+
.d2h-diff-tbody td:first-child {
|
|
269
|
+
width: 80px !important;
|
|
270
|
+
min-width: 80px !important;
|
|
271
|
+
max-width: 80px !important;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.d2h-diff-tbody td.d2h-code-line-ctn {
|
|
275
|
+
width: auto !important;
|
|
276
|
+
overflow-wrap: break-word !important;
|
|
277
|
+
word-wrap: break-word !important;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/* Simplified line numbers for unified view */
|
|
281
|
+
.d2h-code-linenumber {
|
|
282
|
+
background: var(--color-bg-secondary) !important;
|
|
283
|
+
color: var(--color-text-tertiary) !important;
|
|
284
|
+
border-right: 1px solid var(--color-border-secondary) !important;
|
|
285
|
+
font-size: 12px;
|
|
286
|
+
padding: 0 4px !important;
|
|
287
|
+
text-align: center !important;
|
|
288
|
+
white-space: nowrap !important;
|
|
289
|
+
cursor: pointer !important;
|
|
290
|
+
user-select: none !important;
|
|
291
|
+
-webkit-user-select: none !important;
|
|
292
|
+
-moz-user-select: none !important;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.d2h-code-linenumber .line-num1,
|
|
296
|
+
.d2h-code-linenumber .line-num2 {
|
|
297
|
+
display: inline-block;
|
|
298
|
+
width: 32px;
|
|
299
|
+
text-align: right;
|
|
300
|
+
padding: 0 2px;
|
|
301
|
+
font-size: 11px !important;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.d2h-code-linenumber .line-num2 {
|
|
305
|
+
padding-right: 8px;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/* Style info/hunk headers (@@ lines) */
|
|
309
|
+
.d2h-info {
|
|
310
|
+
background: var(--color-bg-secondary) !important;
|
|
311
|
+
color: var(--color-accent-primary) !important;
|
|
312
|
+
font-family: 'SF Mono', Monaco, monospace !important;
|
|
313
|
+
font-size: 12px !important;
|
|
314
|
+
padding: 4px 10px !important;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* Remove any yellow/changed line styling */
|
|
318
|
+
.d2h-change {
|
|
319
|
+
background: var(--color-bg-primary) !important;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.d2h-change .d2h-change-inner {
|
|
323
|
+
background: transparent !important;
|
|
324
|
+
font-weight: normal !important;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.d2h-file-diff {
|
|
328
|
+
overflow: visible !important;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Ensure no prefix characters are shown */
|
|
332
|
+
.d2h-code-line-prefix {
|
|
333
|
+
display: none !important;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/* Hide any inline diff markers */
|
|
337
|
+
.d2h-code-line-ctn::before {
|
|
338
|
+
content: none !important;
|
|
339
|
+
display: none !important;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/* Ensure proper table layout */
|
|
343
|
+
.d2h-diff-table {
|
|
344
|
+
table-layout: auto !important;
|
|
345
|
+
overflow: visible !important;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.d2h-diff-tbody {
|
|
349
|
+
display: table-row-group !important;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.d2h-diff-tbody tr {
|
|
353
|
+
display: table-row !important;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.d2h-diff-tbody td {
|
|
357
|
+
display: table-cell !important;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* Special styling for new/untracked files - now same as regular additions */
|
|
361
|
+
.d2h-file-wrapper[data-new-file="true"] .d2h-file-header,
|
|
362
|
+
.d2h-file-addition .d2h-file-header {
|
|
363
|
+
background: var(--color-bg-secondary) !important; /* Use same header as regular files */
|
|
364
|
+
border-bottom: 1px solid var(--color-border-secondary) !important;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* For new files, use the same green background as regular additions */
|
|
368
|
+
.d2h-file-addition .d2h-ins,
|
|
369
|
+
.d2h-file-addition .d2h-ins .d2h-code-line-ctn,
|
|
370
|
+
.d2h-file-addition .d2h-ins .d2h-code-line,
|
|
371
|
+
.d2h-file-addition tr.d2h-ins,
|
|
372
|
+
.d2h-file-addition tr.d2h-ins td,
|
|
373
|
+
.d2h-file-addition .d2h-code-line {
|
|
374
|
+
background: var(--color-diff-addition) !important; /* Same green as regular additions */
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/* ==========================================================================
|
|
378
|
+
Syntax Highlighting Overrides for Dark Mode
|
|
379
|
+
|
|
380
|
+
The highlight.js CDN styles use prefers-color-scheme media queries, but our
|
|
381
|
+
app uses data-theme="dark" for manual theme toggling. These overrides ensure
|
|
382
|
+
proper syntax highlighting colors when dark mode is manually enabled.
|
|
383
|
+
|
|
384
|
+
Additionally, the default blue (#79c0ff) has been adjusted to #a5d6ff for
|
|
385
|
+
better contrast against dark backgrounds, especially in diff views.
|
|
386
|
+
========================================================================== */
|
|
387
|
+
|
|
388
|
+
[data-theme="dark"] .hljs {
|
|
389
|
+
color: #c9d1d9;
|
|
390
|
+
background: #0d1117;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
[data-theme="dark"] .hljs-doctag,
|
|
394
|
+
[data-theme="dark"] .hljs-keyword,
|
|
395
|
+
[data-theme="dark"] .hljs-meta .hljs-keyword,
|
|
396
|
+
[data-theme="dark"] .hljs-template-tag,
|
|
397
|
+
[data-theme="dark"] .hljs-template-variable,
|
|
398
|
+
[data-theme="dark"] .hljs-type,
|
|
399
|
+
[data-theme="dark"] .hljs-variable.language_ {
|
|
400
|
+
color: #ff7b72;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
[data-theme="dark"] .hljs-title,
|
|
404
|
+
[data-theme="dark"] .hljs-title.class_,
|
|
405
|
+
[data-theme="dark"] .hljs-title.class_.inherited__,
|
|
406
|
+
[data-theme="dark"] .hljs-title.function_ {
|
|
407
|
+
color: #d2a8ff;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/* Improved blue for better contrast - changed from #79c0ff to #a5d6ff */
|
|
411
|
+
[data-theme="dark"] .hljs-attr,
|
|
412
|
+
[data-theme="dark"] .hljs-attribute,
|
|
413
|
+
[data-theme="dark"] .hljs-literal,
|
|
414
|
+
[data-theme="dark"] .hljs-meta,
|
|
415
|
+
[data-theme="dark"] .hljs-number,
|
|
416
|
+
[data-theme="dark"] .hljs-operator,
|
|
417
|
+
[data-theme="dark"] .hljs-variable,
|
|
418
|
+
[data-theme="dark"] .hljs-selector-attr,
|
|
419
|
+
[data-theme="dark"] .hljs-selector-class,
|
|
420
|
+
[data-theme="dark"] .hljs-selector-id {
|
|
421
|
+
color: var(--syntax-blue);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
[data-theme="dark"] .hljs-regexp,
|
|
425
|
+
[data-theme="dark"] .hljs-string,
|
|
426
|
+
[data-theme="dark"] .hljs-meta .hljs-string {
|
|
427
|
+
color: var(--syntax-blue);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
[data-theme="dark"] .hljs-built_in,
|
|
431
|
+
[data-theme="dark"] .hljs-symbol {
|
|
432
|
+
color: #ffa657;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
[data-theme="dark"] .hljs-comment,
|
|
436
|
+
[data-theme="dark"] .hljs-code,
|
|
437
|
+
[data-theme="dark"] .hljs-formula {
|
|
438
|
+
color: #8b949e;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
[data-theme="dark"] .hljs-name,
|
|
442
|
+
[data-theme="dark"] .hljs-quote,
|
|
443
|
+
[data-theme="dark"] .hljs-selector-tag,
|
|
444
|
+
[data-theme="dark"] .hljs-selector-pseudo {
|
|
445
|
+
color: #7ee787;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
[data-theme="dark"] .hljs-subst {
|
|
449
|
+
color: #c9d1d9;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
[data-theme="dark"] .hljs-section {
|
|
453
|
+
color: #1f6feb;
|
|
454
|
+
font-weight: bold;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
[data-theme="dark"] .hljs-bullet {
|
|
458
|
+
color: #f2cc60;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
[data-theme="dark"] .hljs-emphasis {
|
|
462
|
+
color: #c9d1d9;
|
|
463
|
+
font-style: italic;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
[data-theme="dark"] .hljs-strong {
|
|
467
|
+
color: #c9d1d9;
|
|
468
|
+
font-weight: bold;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
[data-theme="dark"] .hljs-addition {
|
|
472
|
+
color: #aff5b4;
|
|
473
|
+
background-color: #033a16;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
[data-theme="dark"] .hljs-deletion {
|
|
477
|
+
color: #ffdcd7;
|
|
478
|
+
background-color: #67060c;
|
|
479
|
+
}
|
|
Binary file
|