gabriel / musehub public
_blast_risk.scss
308 lines 7.5 KB
Raw
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor ⚠ breaking 1 day ago
1 // ─────────────────────────────────────────────────────────────────────────────
2 // Component: Blast Risk (.br-* prefix)
3 // File: src/scss/components/_blast_risk.scss
4 //
5 // Visual rules only — colors, typography, backgrounds, borders, transitions.
6 // Structural layout lives in pages/_blast_risk.scss.
7 // ─────────────────────────────────────────────────────────────────────────────
8
9
10 // ── Stat cards ────────────────────────────────────────────────────────────────
11
12 .br-stat-card {
13 background: var(--bg-elevated);
14 border: 1px solid var(--border-default);
15 border-radius: var(--radius-md);
16 text-align: center;
17
18 &--critical { border-color: var(--color-danger); }
19 &--high { border-color: var(--color-warning); }
20 &--medium { border-color: var(--color-accent); }
21 &--low { border-color: var(--border-default); }
22 }
23
24 .br-stat-value {
25 font-size: 1.6rem;
26 font-weight: 700;
27 font-family: var(--font-mono);
28 color: var(--text-primary);
29 line-height: 1;
30 }
31
32 .br-stat-label {
33 font-size: 0.65rem;
34 font-weight: 600;
35 letter-spacing: 0.08em;
36 text-transform: uppercase;
37 color: var(--text-muted);
38 }
39
40 // ── Filter bar ────────────────────────────────────────────────────────────────
41
42 .br-filter-bar {
43 display: flex;
44 flex-wrap: wrap;
45 gap: 0.3rem;
46 align-items: center;
47 margin-bottom: 1rem;
48 }
49
50 .br-filter-btn {
51 font-size: 0.72rem;
52 font-weight: 500;
53 padding: 0.2rem 0.55rem;
54 border-radius: var(--radius-sm, 4px);
55 border: 1px solid var(--border-default);
56 background: var(--bg-elevated);
57 color: var(--text-muted);
58 text-decoration: none;
59 transition: background 120ms, border-color 120ms, color 120ms;
60
61 &:hover { background: var(--bg-hover); color: var(--text-primary); }
62
63 &--active {
64 background: var(--bg-hover);
65 color: var(--text-primary);
66 border-color: var(--border-emphasis);
67 }
68
69 &--critical { border-color: var(--color-danger); }
70 &--high { border-color: var(--color-warning); }
71 &--medium { border-color: var(--color-accent); }
72 }
73
74 .br-filter-sep {
75 color: var(--border-default);
76 margin: 0 0.2rem;
77 }
78
79 // ── Symbol list ───────────────────────────────────────────────────────────────
80
81 .br-list {
82 background: var(--bg-surface);
83 border: 1px solid var(--border-default);
84 border-radius: var(--radius-md);
85 overflow: hidden;
86 }
87
88 .br-row {
89 display: flex;
90 align-items: center;
91 gap: 0.65rem;
92 padding: 0.5rem 1rem;
93 border-top: 1px solid var(--border-subtle);
94 transition: background 120ms ease;
95 color: inherit;
96 text-decoration: none;
97 cursor: pointer;
98
99 &:first-child { border-top: none; }
100 &:hover { background: var(--bg-hover); text-decoration: none; }
101
102 &--critical .br-score { color: var(--color-danger); }
103 &--high .br-score { color: var(--color-warning); }
104 &--medium .br-score { color: var(--color-accent); }
105 &--low .br-score { color: var(--text-muted); }
106 }
107
108 .br-tier-badge {
109 flex-shrink: 0;
110 min-width: 4.5rem;
111 text-align: center;
112 }
113
114 .br-score {
115 font-size: 0.82rem;
116 font-weight: 700;
117 font-family: var(--font-mono);
118 flex-shrink: 0;
119 min-width: 2rem;
120 text-align: right;
121 }
122
123 .br-address {
124 flex: 1;
125 min-width: 0;
126 font-family: var(--font-mono);
127 font-size: 0.82rem;
128 overflow: hidden;
129 text-overflow: ellipsis;
130 white-space: nowrap;
131 }
132
133 .br-file {
134 color: var(--text-muted);
135 }
136
137 .br-sep {
138 color: var(--border-default);
139 }
140
141 .br-name {
142 color: var(--color-accent-link);
143 }
144
145 .br-meta {
146 display: flex;
147 gap: 0.5rem;
148 flex-shrink: 0;
149 font-size: 0.7rem;
150 color: var(--text-muted);
151 font-family: var(--font-mono);
152 white-space: nowrap;
153 }
154
155 .br-meta-item {
156 opacity: 0.7;
157 }
158
159 // ── Detail page ───────────────────────────────────────────────────────────────
160
161 .br-detail-hd {
162 background: var(--bg-surface);
163 border: 1px solid var(--border-default);
164 border-radius: var(--radius-md);
165 padding: 1.1rem 1.25rem;
166 margin-bottom: 1rem;
167 display: flex;
168 flex-direction: column;
169 gap: 0.5rem;
170 }
171
172 .br-detail-badges {
173 display: flex;
174 gap: 0.4rem;
175 flex-wrap: wrap;
176 }
177
178 .br-detail-score-wrap {
179 display: flex;
180 align-items: baseline;
181 gap: 0.25rem;
182 }
183
184 .br-detail-score {
185 font-size: 2.4rem;
186 font-weight: 700;
187 line-height: 1;
188 color: var(--text-primary);
189 }
190
191 .br-detail-score-label {
192 font-size: 0.8rem;
193 color: var(--text-muted);
194 }
195
196 .br-detail-addr {
197 font-size: 0.78rem;
198 color: var(--text-muted);
199 overflow: hidden;
200 text-overflow: ellipsis;
201 white-space: nowrap;
202 }
203
204 // ── Sub-score bars ────────────────────────────────────────────────────────────
205
206 .br-subscore-card {
207 background: var(--bg-surface);
208 border: 1px solid var(--border-default);
209 border-radius: var(--radius-md);
210 padding: 1rem 1.25rem;
211 margin-bottom: 1rem;
212 display: flex;
213 flex-direction: column;
214 gap: 0.85rem;
215 }
216
217 .br-subscore-title {
218 font-size: 0.72rem;
219 font-weight: 600;
220 letter-spacing: 0.07em;
221 text-transform: uppercase;
222 color: var(--text-muted);
223 margin-bottom: 0.25rem;
224 }
225
226 .br-subscore-row {
227 display: flex;
228 align-items: center;
229 gap: 0.75rem;
230 }
231
232 .br-subscore-label {
233 font-size: 0.75rem;
234 font-weight: 600;
235 color: var(--text-primary);
236 min-width: 5.5rem;
237 flex-shrink: 0;
238 }
239
240 .br-score-track {
241 flex: 1;
242 height: 8px;
243 background: var(--bg-elevated);
244 border-radius: 4px;
245 overflow: hidden;
246 border: 1px solid var(--border-subtle);
247 }
248
249 .br-score-fill {
250 height: 100%;
251 border-radius: 4px;
252 transition: width 300ms ease;
253
254 &--critical { background: var(--color-danger); }
255 &--high { background: var(--color-warning); }
256 &--medium { background: var(--color-accent); }
257 &--low { background: var(--color-success, #3fb950); }
258 }
259
260 .br-subscore-val {
261 font-size: 0.75rem;
262 font-weight: 600;
263 color: var(--text-primary);
264 min-width: 2.2rem;
265 text-align: right;
266 flex-shrink: 0;
267 }
268
269 .br-subscore-hint {
270 font-size: 0.68rem;
271 color: var(--text-muted);
272 white-space: nowrap;
273 overflow: hidden;
274 text-overflow: ellipsis;
275 min-width: 0;
276 }
277
278 // ── Direct dependents card ────────────────────────────────────────────────────
279
280 .br-deps-card {
281 background: var(--bg-surface);
282 border: 1px solid var(--border-default);
283 border-radius: var(--radius-md);
284 padding: 1rem 1.25rem;
285 margin-bottom: 1rem;
286 display: flex;
287 flex-direction: column;
288 gap: 0.4rem;
289 }
290
291 .br-deps-title {
292 font-size: 0.72rem;
293 font-weight: 600;
294 letter-spacing: 0.07em;
295 text-transform: uppercase;
296 color: var(--text-muted);
297 margin-bottom: 0.25rem;
298 }
299
300 .br-dep-row {
301 font-size: 0.78rem;
302 color: var(--color-accent-link);
303 padding: 0.2rem 0;
304 border-top: 1px solid var(--border-subtle);
305
306 &:first-of-type { border-top: none; }
307 }
308
File History 1 commit
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor 1 day ago