rust-analyzer-db 0.2.0__py3-none-any.whl

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.
@@ -0,0 +1,573 @@
1
+ :root {
2
+ --bg-primary: #0f1117;
3
+ --bg-secondary: #161822;
4
+ --bg-card: #1a1d2e;
5
+ --bg-sidebar: #111320;
6
+ --bg-hover: #1e2235;
7
+ --border: #2a2d3e;
8
+ --text-primary: #e1e4ed;
9
+ --text-secondary: #8b8fa3;
10
+ --text-muted: #5a5e72;
11
+ --accent: #6366f1;
12
+ --accent-hover: #818cf8;
13
+ --accent-dim: rgba(99,102,241,0.15);
14
+ --success: #22c55e;
15
+ --warning: #f59e0b;
16
+ --danger: #ef4444;
17
+ --info: #3b82f6;
18
+ --radius: 8px;
19
+ --radius-lg: 12px;
20
+ --shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);
21
+ --shadow-lg: 0 4px 12px rgba(0,0,0,0.4);
22
+ --sidebar-width: 260px;
23
+ --topbar-height: 56px;
24
+ --transition: 150ms ease;
25
+ }
26
+
27
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
28
+
29
+ html, body {
30
+ height: 100%;
31
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
32
+ font-size: 14px;
33
+ line-height: 1.5;
34
+ color: var(--text-primary);
35
+ background: var(--bg-primary);
36
+ -webkit-font-smoothing: antialiased;
37
+ }
38
+
39
+ a { color: var(--accent); text-decoration: none; }
40
+ a:hover { color: var(--accent-hover); }
41
+
42
+ /* ── Layout ───────────────────────────────────────────── */
43
+ .app { display: flex; height: 100vh; overflow: hidden; }
44
+
45
+ .sidebar {
46
+ width: var(--sidebar-width);
47
+ min-width: var(--sidebar-width);
48
+ background: var(--bg-sidebar);
49
+ border-right: 1px solid var(--border);
50
+ display: flex;
51
+ flex-direction: column;
52
+ z-index: 20;
53
+ }
54
+
55
+ .sidebar-header {
56
+ padding: 16px 20px;
57
+ border-bottom: 1px solid var(--border);
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 12px;
61
+ }
62
+
63
+ .sidebar-logo {
64
+ width: 32px;
65
+ height: 32px;
66
+ background: var(--accent);
67
+ border-radius: var(--radius);
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ font-weight: 700;
72
+ font-size: 14px;
73
+ color: #fff;
74
+ flex-shrink: 0;
75
+ }
76
+
77
+ .sidebar-title {
78
+ font-size: 15px;
79
+ font-weight: 600;
80
+ color: var(--text-primary);
81
+ white-space: nowrap;
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+ }
85
+
86
+ .sidebar-subtitle {
87
+ font-size: 11px;
88
+ color: var(--text-muted);
89
+ }
90
+
91
+ .sidebar-nav {
92
+ flex: 1;
93
+ overflow-y: auto;
94
+ padding: 12px 0;
95
+ }
96
+
97
+ .nav-section {
98
+ padding: 8px 20px 4px;
99
+ font-size: 11px;
100
+ font-weight: 600;
101
+ text-transform: uppercase;
102
+ letter-spacing: 0.05em;
103
+ color: var(--text-muted);
104
+ }
105
+
106
+ .nav-link {
107
+ display: flex;
108
+ align-items: center;
109
+ gap: 10px;
110
+ padding: 9px 20px;
111
+ color: var(--text-secondary);
112
+ font-size: 13px;
113
+ font-weight: 500;
114
+ transition: background var(--transition), color var(--transition);
115
+ border-left: 3px solid transparent;
116
+ }
117
+
118
+ .nav-link:hover {
119
+ background: var(--bg-hover);
120
+ color: var(--text-primary);
121
+ }
122
+
123
+ .nav-link.active {
124
+ background: var(--accent-dim);
125
+ color: var(--accent);
126
+ border-left-color: var(--accent);
127
+ }
128
+
129
+ .nav-link svg { width: 18px; height: 18px; flex-shrink: 0; opacity: 0.7; }
130
+ .nav-link.active svg { opacity: 1; }
131
+
132
+ .sidebar-footer {
133
+ padding: 12px 20px;
134
+ border-top: 1px solid var(--border);
135
+ font-size: 11px;
136
+ color: var(--text-muted);
137
+ }
138
+
139
+ /* ── Main ─────────────────────────────────────────────── */
140
+ .main {
141
+ flex: 1;
142
+ display: flex;
143
+ flex-direction: column;
144
+ overflow: hidden;
145
+ }
146
+
147
+ .topbar {
148
+ height: var(--topbar-height);
149
+ min-height: var(--topbar-height);
150
+ background: var(--bg-secondary);
151
+ border-bottom: 1px solid var(--border);
152
+ display: flex;
153
+ align-items: center;
154
+ padding: 0 24px;
155
+ gap: 16px;
156
+ }
157
+
158
+ .topbar-title {
159
+ font-size: 16px;
160
+ font-weight: 600;
161
+ }
162
+
163
+ .topbar-search {
164
+ flex: 1;
165
+ max-width: 400px;
166
+ position: relative;
167
+ }
168
+
169
+ .topbar-search input {
170
+ width: 100%;
171
+ padding: 7px 12px 7px 34px;
172
+ background: var(--bg-card);
173
+ border: 1px solid var(--border);
174
+ border-radius: var(--radius);
175
+ color: var(--text-primary);
176
+ font-size: 13px;
177
+ outline: none;
178
+ transition: border-color var(--transition);
179
+ }
180
+
181
+ .topbar-search input:focus { border-color: var(--accent); }
182
+ .topbar-search input::placeholder { color: var(--text-muted); }
183
+
184
+ .topbar-search svg {
185
+ position: absolute;
186
+ left: 10px;
187
+ top: 50%;
188
+ transform: translateY(-50%);
189
+ width: 16px;
190
+ height: 16px;
191
+ color: var(--text-muted);
192
+ }
193
+
194
+ .content {
195
+ flex: 1;
196
+ overflow-y: auto;
197
+ padding: 24px;
198
+ }
199
+
200
+ /* ── Cards ────────────────────────────────────────────── */
201
+ .cards {
202
+ display: grid;
203
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
204
+ gap: 16px;
205
+ margin-bottom: 24px;
206
+ }
207
+
208
+ .card {
209
+ background: var(--bg-card);
210
+ border: 1px solid var(--border);
211
+ border-radius: var(--radius-lg);
212
+ padding: 20px;
213
+ transition: box-shadow var(--transition);
214
+ }
215
+
216
+ .card:hover { box-shadow: var(--shadow-lg); }
217
+
218
+ .card-label {
219
+ font-size: 12px;
220
+ font-weight: 500;
221
+ color: var(--text-secondary);
222
+ text-transform: uppercase;
223
+ letter-spacing: 0.04em;
224
+ margin-bottom: 8px;
225
+ }
226
+
227
+ .card-value {
228
+ font-size: 28px;
229
+ font-weight: 700;
230
+ color: var(--text-primary);
231
+ line-height: 1;
232
+ }
233
+
234
+ .card-sub {
235
+ font-size: 12px;
236
+ color: var(--text-muted);
237
+ margin-top: 6px;
238
+ }
239
+
240
+ /* ── Panels ───────────────────────────────────────────── */
241
+ .panel {
242
+ background: var(--bg-card);
243
+ border: 1px solid var(--border);
244
+ border-radius: var(--radius-lg);
245
+ margin-bottom: 20px;
246
+ }
247
+
248
+ .panel-header {
249
+ padding: 16px 20px;
250
+ border-bottom: 1px solid var(--border);
251
+ display: flex;
252
+ align-items: center;
253
+ justify-content: space-between;
254
+ gap: 12px;
255
+ }
256
+
257
+ .panel-title {
258
+ font-size: 15px;
259
+ font-weight: 600;
260
+ }
261
+
262
+ .panel-body { padding: 16px 20px; }
263
+ .panel-body.no-pad { padding: 0; }
264
+
265
+ /* ── Tables ───────────────────────────────────────────── */
266
+ .table-wrap { overflow-x: auto; }
267
+
268
+ table {
269
+ width: 100%;
270
+ border-collapse: collapse;
271
+ font-size: 13px;
272
+ }
273
+
274
+ thead th {
275
+ padding: 10px 14px;
276
+ text-align: left;
277
+ font-weight: 600;
278
+ font-size: 11px;
279
+ text-transform: uppercase;
280
+ letter-spacing: 0.04em;
281
+ color: var(--text-secondary);
282
+ background: var(--bg-secondary);
283
+ border-bottom: 1px solid var(--border);
284
+ white-space: nowrap;
285
+ position: sticky;
286
+ top: 0;
287
+ z-index: 1;
288
+ cursor: pointer;
289
+ user-select: none;
290
+ }
291
+
292
+ thead th:hover { color: var(--text-primary); }
293
+
294
+ tbody tr { border-bottom: 1px solid var(--border); }
295
+ tbody tr:last-child { border-bottom: none; }
296
+ tbody tr:hover { background: var(--bg-hover); }
297
+
298
+ td {
299
+ padding: 10px 14px;
300
+ color: var(--text-primary);
301
+ vertical-align: top;
302
+ }
303
+
304
+ td.mono { font-family: 'JetBrains Mono', 'Fira Code', monospace; font-size: 12px; }
305
+ td.muted { color: var(--text-secondary); }
306
+
307
+ /* ── Badges ───────────────────────────────────────────── */
308
+ .badge {
309
+ display: inline-block;
310
+ padding: 2px 8px;
311
+ border-radius: 999px;
312
+ font-size: 11px;
313
+ font-weight: 600;
314
+ text-transform: uppercase;
315
+ letter-spacing: 0.03em;
316
+ }
317
+
318
+ .badge-fn { background: rgba(99,102,241,0.15); color: #818cf8; }
319
+ .badge-struct { background: rgba(34,197,94,0.15); color: #4ade80; }
320
+ .badge-enum { background: rgba(251,146,60,0.15); color: #fb923c; }
321
+ .badge-trait { background: rgba(236,72,153,0.15); color: #f472b6; }
322
+ .badge-impl { background: rgba(168,85,247,0.15); color: #c084fc; }
323
+ .badge-method { background: rgba(34,197,94,0.15); color: #4ade80; }
324
+ .badge-macro { background: rgba(250,204,21,0.15); color: #facc15; }
325
+ .badge-mod { background: rgba(56,189,248,0.15); color: #38bdf8; }
326
+ .badge-const { background: rgba(248,113,113,0.15); color: #f87171; }
327
+ .badge-static { background: rgba(251,146,60,0.15); color: #fb923c; }
328
+ .badge-type { background: rgba(56,189,248,0.15); color: #38bdf8; }
329
+ .badge-union { background: rgba(168,85,247,0.15); color: #c084fc; }
330
+ .badge-use { background: rgba(148,163,184,0.15); color: #94a3b8; }
331
+ .badge-ext { background: rgba(148,163,184,0.15); color: #94a3b8; }
332
+
333
+ /* ── Complexity indicators ────────────────────────────── */
334
+ .cx-low { color: var(--success); }
335
+ .cx-medium { color: var(--warning); }
336
+ .cx-high { color: var(--danger); }
337
+
338
+ .cx-bar {
339
+ display: inline-block;
340
+ height: 6px;
341
+ border-radius: 3px;
342
+ vertical-align: middle;
343
+ margin-right: 6px;
344
+ }
345
+
346
+ /* ── Forms / Controls ─────────────────────────────────── */
347
+ .controls {
348
+ display: flex;
349
+ gap: 10px;
350
+ flex-wrap: wrap;
351
+ align-items: center;
352
+ }
353
+
354
+ input[type="text"], input[type="number"], select {
355
+ padding: 7px 12px;
356
+ background: var(--bg-primary);
357
+ border: 1px solid var(--border);
358
+ border-radius: var(--radius);
359
+ color: var(--text-primary);
360
+ font-size: 13px;
361
+ outline: none;
362
+ transition: border-color var(--transition);
363
+ }
364
+
365
+ input[type="text"]:focus, input[type="number"]:focus, select:focus {
366
+ border-color: var(--accent);
367
+ }
368
+
369
+ select { cursor: pointer; }
370
+
371
+ .btn {
372
+ display: inline-flex;
373
+ align-items: center;
374
+ gap: 6px;
375
+ padding: 7px 14px;
376
+ border: 1px solid var(--border);
377
+ border-radius: var(--radius);
378
+ background: var(--bg-card);
379
+ color: var(--text-primary);
380
+ font-size: 13px;
381
+ font-weight: 500;
382
+ cursor: pointer;
383
+ transition: background var(--transition), border-color var(--transition);
384
+ }
385
+
386
+ .btn:hover { background: var(--bg-hover); border-color: var(--accent); }
387
+
388
+ .btn-primary {
389
+ background: var(--accent);
390
+ border-color: var(--accent);
391
+ color: #fff;
392
+ }
393
+
394
+ .btn-primary:hover { background: var(--accent-hover); }
395
+
396
+ /* ── Source code viewer ───────────────────────────────── */
397
+ .source-viewer {
398
+ background: var(--bg-primary);
399
+ border: 1px solid var(--border);
400
+ border-radius: var(--radius);
401
+ padding: 16px;
402
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
403
+ font-size: 12px;
404
+ line-height: 1.7;
405
+ overflow-x: auto;
406
+ white-space: pre;
407
+ color: var(--text-secondary);
408
+ max-height: 400px;
409
+ overflow-y: auto;
410
+ }
411
+
412
+ .source-viewer .kw { color: #c084fc; }
413
+ .source-viewer .fn { color: #60a5fa; }
414
+ .source-viewer .str { color: #86efac; }
415
+ .source-viewer .num { color: #fca5a5; }
416
+ .source-viewer .cmt { color: #5a5e72; font-style: italic; }
417
+ .source-viewer .typ { color: #fbbf24; }
418
+ .source-viewer .mac { color: #67e8f9; }
419
+
420
+ /* ── Pagination ───────────────────────────────────────── */
421
+ .pagination {
422
+ display: flex;
423
+ gap: 4px;
424
+ align-items: center;
425
+ padding: 12px 0;
426
+ justify-content: center;
427
+ }
428
+
429
+ .pagination button {
430
+ padding: 5px 10px;
431
+ background: var(--bg-card);
432
+ border: 1px solid var(--border);
433
+ border-radius: var(--radius);
434
+ color: var(--text-secondary);
435
+ font-size: 12px;
436
+ cursor: pointer;
437
+ }
438
+
439
+ .pagination button:hover { background: var(--bg-hover); color: var(--text-primary); }
440
+ .pagination button.active { background: var(--accent); border-color: var(--accent); color: #fff; }
441
+ .pagination button:disabled { opacity: 0.3; cursor: default; }
442
+
443
+ /* ── Chart containers ─────────────────────────────────── */
444
+ .chart-grid {
445
+ display: grid;
446
+ grid-template-columns: 1fr 1fr;
447
+ gap: 16px;
448
+ margin-bottom: 20px;
449
+ }
450
+
451
+ .chart-box {
452
+ background: var(--bg-card);
453
+ border: 1px solid var(--border);
454
+ border-radius: var(--radius-lg);
455
+ padding: 20px;
456
+ }
457
+
458
+ .chart-box-title {
459
+ font-size: 13px;
460
+ font-weight: 600;
461
+ margin-bottom: 12px;
462
+ color: var(--text-secondary);
463
+ }
464
+
465
+ /* ── Call graph container ─────────────────────────────── */
466
+ #graph-container {
467
+ width: 100%;
468
+ height: 70vh;
469
+ min-height: 500px;
470
+ background: var(--bg-primary);
471
+ border: 1px solid var(--border);
472
+ border-radius: var(--radius);
473
+ }
474
+
475
+ /* ── Empty state ──────────────────────────────────────── */
476
+ .empty-state {
477
+ text-align: center;
478
+ padding: 48px 24px;
479
+ color: var(--text-muted);
480
+ }
481
+
482
+ .empty-state svg { width: 48px; height: 48px; margin-bottom: 12px; opacity: 0.3; }
483
+ .empty-state h3 { font-size: 16px; color: var(--text-secondary); margin-bottom: 8px; }
484
+
485
+ /* ── Source modal ─────────────────────────────────────── */
486
+ .modal-overlay {
487
+ position: fixed;
488
+ inset: 0;
489
+ background: rgba(0,0,0,0.6);
490
+ z-index: 100;
491
+ display: flex;
492
+ align-items: center;
493
+ justify-content: center;
494
+ }
495
+
496
+ .modal {
497
+ background: var(--bg-card);
498
+ border: 1px solid var(--border);
499
+ border-radius: var(--radius-lg);
500
+ width: 90%;
501
+ max-width: 800px;
502
+ max-height: 85vh;
503
+ display: flex;
504
+ flex-direction: column;
505
+ }
506
+
507
+ .modal-header {
508
+ padding: 16px 20px;
509
+ border-bottom: 1px solid var(--border);
510
+ display: flex;
511
+ align-items: center;
512
+ justify-content: space-between;
513
+ }
514
+
515
+ .modal-header h3 { font-size: 15px; }
516
+
517
+ .modal-close {
518
+ background: none;
519
+ border: none;
520
+ color: var(--text-muted);
521
+ cursor: pointer;
522
+ font-size: 20px;
523
+ line-height: 1;
524
+ }
525
+
526
+ .modal-body {
527
+ padding: 16px 20px;
528
+ overflow-y: auto;
529
+ }
530
+
531
+ /* ── Scrollbar ────────────────────────────────────────── */
532
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
533
+ ::-webkit-scrollbar-track { background: transparent; }
534
+ ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
535
+ ::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }
536
+
537
+ /* ── Responsive ───────────────────────────────────────── */
538
+ @media (max-width: 768px) {
539
+ .sidebar { position: fixed; left: -260px; transition: left 0.2s; }
540
+ .sidebar.open { left: 0; }
541
+ .chart-grid { grid-template-columns: 1fr; }
542
+ .cards { grid-template-columns: 1fr 1fr; }
543
+ }
544
+
545
+ /* ── Dependency list ──────────────────────────────────── */
546
+ .dep-grid {
547
+ display: grid;
548
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
549
+ gap: 8px;
550
+ }
551
+
552
+ .dep-item {
553
+ padding: 10px 14px;
554
+ background: var(--bg-primary);
555
+ border: 1px solid var(--border);
556
+ border-radius: var(--radius);
557
+ font-size: 13px;
558
+ }
559
+
560
+ .dep-item-name { font-weight: 600; color: var(--accent); }
561
+ .dep-item-count { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
562
+
563
+ /* ── Use-path tree ────────────────────────────────────── */
564
+ .use-tree { padding-left: 0; list-style: none; }
565
+ .use-tree li {
566
+ padding: 3px 0;
567
+ font-family: 'JetBrains Mono', monospace;
568
+ font-size: 12px;
569
+ color: var(--text-secondary);
570
+ }
571
+ .use-tree li::before { content: ''; }
572
+ .use-tree .use-crate { color: var(--accent); font-weight: 600; }
573
+ .use-tree .use-sep { color: var(--text-muted); }