gabriel / musehub public
_deps.scss
501 lines 10.2 KB
Raw
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ breaking 156 days ago
1 // ─────────────────────────────────────────────────────────────────────────────
2 // Dependency list page (.deps-*)
3 // ─────────────────────────────────────────────────────────────────────────────
4
5 .deps-page {
6 max-width: 900px;
7 margin: 0 auto;
8 padding: var(--space-4);
9 }
10
11 .deps-header {
12 border-bottom: 1px solid var(--border-subtle);
13 padding-bottom: var(--space-4);
14 margin-bottom: var(--space-6);
15 }
16
17 .deps-header-inner {
18 display: flex;
19 align-items: flex-start;
20 justify-content: space-between;
21 gap: var(--space-4);
22 }
23
24 .deps-title {
25 display: flex;
26 align-items: center;
27 gap: 8px;
28 font-size: 18px;
29 font-weight: 700;
30 margin: 0 0 var(--space-2) 0;
31 svg { opacity: 0.6; }
32 }
33
34 .deps-sub {
35 font-size: 12px;
36 color: var(--text-muted);
37 margin: 0;
38 }
39
40 .deps-empty {
41 display: flex;
42 flex-direction: column;
43 align-items: center;
44 gap: var(--space-3);
45 padding: var(--space-10) 0;
46 color: var(--text-muted);
47 font-size: 13px;
48 svg { opacity: 0.3; }
49 }
50
51 .deps-section {
52 margin-bottom: var(--space-6);
53 }
54
55 .deps-section-title {
56 font-size: 11px;
57 font-weight: 700;
58 text-transform: uppercase;
59 letter-spacing: 0.07em;
60 color: var(--text-muted);
61 margin-bottom: var(--space-3);
62 }
63
64 .deps-node-list {
65 display: flex;
66 flex-direction: column;
67 gap: 1px;
68 }
69
70 .deps-node {
71 display: flex;
72 align-items: flex-start;
73 gap: 10px;
74 padding: 10px 14px;
75 border: 1px solid var(--border-subtle);
76 border-radius: 7px;
77 background: var(--bg-base);
78 &:hover { background: var(--bg-surface); }
79 }
80
81 .deps-node-dot {
82 width: 10px;
83 height: 10px;
84 border-radius: 50%;
85 flex-shrink: 0;
86 margin-top: 3px;
87 &.deps-node-dot--local { background: var(--color-accent); opacity: 0.8; }
88 &.deps-node-dot--cross {
89 background: transparent;
90 border: 2px solid var(--color-purple);
91 border-radius: 2px;
92 transform: rotate(45deg);
93 width: 9px;
94 height: 9px;
95 }
96 }
97
98 .deps-node-body {
99 display: flex;
100 align-items: center;
101 gap: 8px;
102 flex: 1;
103 min-width: 0;
104 }
105
106 .deps-node-id {
107 font-family: var(--font-mono);
108 font-size: 12px;
109 color: var(--text-primary);
110 overflow: hidden;
111 text-overflow: ellipsis;
112 white-space: nowrap;
113 }
114
115 .deps-node-count {
116 font-size: 10px;
117 color: var(--text-muted);
118 font-family: var(--font-mono);
119 white-space: nowrap;
120 }
121
122 .deps-node-repo {
123 font-size: 11px;
124 color: var(--color-purple);
125 font-weight: 600;
126 white-space: nowrap;
127 }
128
129 .deps-node-edges {
130 display: flex;
131 flex-wrap: wrap;
132 gap: 4px;
133 margin-top: 6px;
134 width: 100%;
135 padding-left: 20px;
136 }
137
138 .deps-edge-chip {
139 display: inline-flex;
140 align-items: center;
141 gap: 4px;
142 font-size: 10px;
143 font-family: var(--font-mono);
144 padding: 2px 6px;
145 border-radius: 3px;
146 max-width: 280px;
147 overflow: hidden;
148 text-overflow: ellipsis;
149 white-space: nowrap;
150
151 &.deps-edge-chip--co_change {
152 background: rgba(79, 142, 247, 0.08);
153 color: var(--color-accent);
154 border: 1px solid rgba(79, 142, 247, 0.20);
155 }
156 &.deps-edge-chip--cross_repo {
157 background: rgba(188, 140, 255, 0.08);
158 color: var(--color-purple);
159 border: 1px solid rgba(188, 140, 255, 0.20);
160 }
161 }
162
163 .deps-edge-weight {
164 font-size: 9px;
165 opacity: 0.7;
166 }
167
168 .deps-edge-more {
169 font-size: 10px;
170 color: var(--text-muted);
171 padding: 2px 4px;
172 }
173
174 // ─────────────────────────────────────────────────────────────────────────────
175 // Dependency graph page (.dg-*)
176 // ─────────────────────────────────────────────────────────────────────────────
177
178 .dg-layout {
179 display: flex;
180 height: calc(100vh - var(--nav-height, 56px));
181 overflow: hidden;
182 }
183
184 .dg-sidebar {
185 width: 240px;
186 flex-shrink: 0;
187 border-right: 1px solid var(--border-subtle);
188 background: var(--bg-surface);
189 display: flex;
190 flex-direction: column;
191 gap: var(--space-3);
192 padding: var(--space-4);
193 overflow-y: auto;
194 }
195
196 .dg-sidebar-title {
197 display: flex;
198 align-items: center;
199 gap: 7px;
200 font-size: 13px;
201 font-weight: 700;
202 color: var(--text-primary);
203 svg { opacity: 0.6; }
204 }
205
206 .dg-stats {
207 display: flex;
208 flex-wrap: wrap;
209 gap: 8px;
210 }
211
212 .dg-stat {
213 font-size: 11px;
214 color: var(--text-muted);
215 strong { color: var(--text-primary); }
216 }
217
218 .dg-legend {
219 display: flex;
220 flex-direction: column;
221 gap: 6px;
222 padding: var(--space-2) 0;
223 border-top: 1px solid var(--border-subtle);
224 border-bottom: 1px solid var(--border-subtle);
225 }
226
227 .dg-legend-row {
228 display: flex;
229 align-items: center;
230 gap: 8px;
231 font-size: 11px;
232 color: var(--text-muted);
233 }
234
235 .dg-controls {
236 display: flex;
237 gap: 4px;
238 }
239
240 .dg-filter {
241 font-size: 11px;
242 color: var(--text-secondary);
243 }
244
245 .dg-filter-label {
246 display: flex;
247 align-items: center;
248 gap: 6px;
249 cursor: pointer;
250 }
251
252 .dg-filter-cb {
253 accent-color: var(--color-accent);
254 }
255
256 .dg-node-panel {
257 flex: 1;
258 border: 1px solid var(--border-subtle);
259 border-radius: 7px;
260 padding: var(--space-3);
261 background: var(--bg-overlay);
262 display: flex;
263 flex-direction: column;
264 gap: 6px;
265 }
266
267 .dg-node-panel-name {
268 font-size: 13px;
269 font-weight: 700;
270 color: var(--text-primary);
271 }
272
273 .dg-node-panel-meta {
274 display: flex;
275 flex-direction: column;
276 gap: 3px;
277 font-size: 11px;
278 color: var(--text-muted);
279 code { font-family: var(--font-mono); color: var(--text-secondary); font-size: 10px; }
280 }
281
282 .dg-detail-row {
283 display: block;
284 }
285
286 .dg-node-panel-links {
287 display: flex;
288 flex-direction: column;
289 gap: 4px;
290 margin-top: var(--space-1);
291 }
292
293 .dg-detail-link {
294 font-size: 11px;
295 color: var(--color-accent-link);
296 text-decoration: none;
297 &:hover { text-decoration: underline; }
298 }
299
300 .dg-list-link {
301 display: inline-flex;
302 align-items: center;
303 gap: 5px;
304 font-size: 11px;
305 color: var(--text-muted);
306 text-decoration: none;
307 margin-top: auto;
308 &:hover { color: var(--text-primary); }
309 }
310
311 .dg-canvas-wrap {
312 flex: 1;
313 overflow: hidden;
314 background: var(--bg-base);
315 position: relative;
316 }
317
318 .dg-canvas {
319 display: block;
320 width: 100%;
321 height: 100%;
322 }
323
324 // Selected node highlight
325 .dg-node[data-selected="true"] circle,
326 .dg-node[data-selected="true"] polygon {
327 stroke: var(--text-primary) !important;
328 stroke-width: 2.5 !important;
329 filter: drop-shadow(0 0 6px rgba(255,255,255,0.3));
330 }
331
332 // ─────────────────────────────────────────────────────────────────────────────
333 // Symbol search page (.ss-*)
334 // ─────────────────────────────────────────────────────────────────────────────
335
336 .ss-page {
337 max-width: 800px;
338 margin: 0 auto;
339 padding: var(--space-6) var(--space-4);
340 }
341
342 .ss-hero {
343 margin-bottom: var(--space-5);
344 }
345
346 .ss-hero-eyebrow {
347 display: flex;
348 align-items: center;
349 gap: 6px;
350 font-size: 11px;
351 font-weight: 600;
352 text-transform: uppercase;
353 letter-spacing: 0.08em;
354 color: var(--text-muted);
355 margin-bottom: var(--space-2);
356 svg { opacity: 0.5; }
357 }
358
359 .ss-hero-title {
360 font-size: 22px;
361 font-weight: 700;
362 margin: 0;
363 }
364
365 .ss-form {
366 margin-bottom: var(--space-5);
367 }
368
369 .ss-form-row {
370 display: flex;
371 gap: 8px;
372 align-items: center;
373 }
374
375 .ss-input {
376 flex: 1;
377 padding: 10px 14px;
378 background: var(--bg-surface);
379 border: 1px solid var(--border-default);
380 border-radius: 7px;
381 color: var(--text-primary);
382 font-size: 14px;
383 font-family: var(--font-mono);
384 &:focus {
385 outline: none;
386 border-color: var(--color-accent);
387 box-shadow: 0 0 0 3px rgba(79, 142, 247, 0.12);
388 }
389 }
390
391 .ss-form-hint {
392 font-size: 11px;
393 color: var(--text-muted);
394 margin: 6px 0 0 0;
395 }
396
397 .ss-results-header {
398 font-size: 13px;
399 color: var(--text-muted);
400 margin-bottom: var(--space-3);
401 }
402
403 .ss-results-count {
404 font-weight: 600;
405 color: var(--text-primary);
406 }
407
408 .ss-results-query {
409 font-family: var(--font-mono);
410 font-size: 12px;
411 color: var(--text-secondary);
412 }
413
414 .ss-result-list {
415 display: flex;
416 flex-direction: column;
417 gap: 1px;
418 }
419
420 .ss-result {
421 display: flex;
422 align-items: center;
423 gap: 10px;
424 padding: 10px 14px;
425 border: 1px solid var(--border-subtle);
426 border-radius: 7px;
427 background: var(--bg-base);
428 text-decoration: none;
429 &:hover { background: var(--bg-surface); }
430 }
431
432 .ss-result-repo {
433 display: inline-flex;
434 align-items: center;
435 gap: 5px;
436 font-size: 11px;
437 font-weight: 600;
438 color: var(--text-muted);
439 min-width: 80px;
440 flex-shrink: 0;
441 svg { opacity: 0.5; }
442 }
443
444 .ss-result-addr {
445 font-family: var(--font-mono);
446 font-size: 12px;
447 color: var(--text-primary);
448 flex: 1;
449 overflow: hidden;
450 text-overflow: ellipsis;
451 white-space: nowrap;
452 }
453
454 .ss-result-meta {
455 display: flex;
456 align-items: center;
457 gap: 6px;
458 flex-shrink: 0;
459 }
460
461 .ss-result-sep { color: var(--text-muted); font-size: 11px; }
462
463 .ss-result-op {
464 font-size: 10px;
465 font-weight: 600;
466 font-family: var(--font-mono);
467 padding: 1px 5px;
468 border-radius: 3px;
469 &.ss-result-op--add { background: rgba(63,185,80,0.12); color: var(--color-success); }
470 &.ss-result-op--modify { background: rgba(79,142,247,0.10); color: var(--color-accent); }
471 &.ss-result-op--delete { background: rgba(248,81,73,0.10); color: var(--color-danger); }
472 }
473
474 .ss-result-cochange {
475 display: inline-flex;
476 align-items: center;
477 gap: 3px;
478 font-size: 11px;
479 font-family: var(--font-mono);
480 color: var(--text-muted);
481 svg { opacity: 0.5; }
482 }
483
484 .ss-empty {
485 display: flex;
486 flex-direction: column;
487 align-items: center;
488 gap: var(--space-3);
489 padding: var(--space-10) 0;
490 color: var(--text-muted);
491 font-size: 13px;
492 text-align: center;
493 svg { opacity: 0.3; }
494 code { font-family: var(--font-mono); color: var(--text-secondary); }
495 }
496
497 .ss-empty-hint {
498 font-size: 12px;
499 color: var(--text-muted);
500 margin: 0;
501 }
File History 1 commit
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ 156 days ago