gabriel / musehub public
_branches.scss
278 lines 10.0 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: Branches (.br-* prefix)
3 // File: src/scss/components/_branches.scss
4 //
5 // Visual rules for the branches page.
6 // Structural layout lives in pages/_branches.scss.
7 // ─────────────────────────────────────────────────────────────────────────────
8
9 // ── Stat strip ────────────────────────────────────────────────────────────────
10
11 .br-stat-strip {
12 background: var(--bg-surface);
13 border: 1px solid var(--border-default);
14 border-radius: var(--radius-md);
15 }
16
17 .br-stat-divider { background: var(--border-default); }
18
19 .br-stat-num {
20 font-size: 22px;
21 font-weight: var(--weight-bold);
22 font-family: var(--font-mono);
23 color: var(--text-primary);
24 line-height: 1;
25
26 &--active { color: var(--color-success); }
27 &--ahead { color: var(--color-accent); }
28 &--authors { color: var(--color-orange); }
29 }
30
31 .br-stat-lbl {
32 font-size: 11px;
33 color: var(--text-muted);
34 text-transform: uppercase;
35 letter-spacing: 0.06em;
36 font-weight: var(--weight-medium);
37 }
38
39 // ── Default branch hero ───────────────────────────────────────────────────────
40
41 .br-default {
42 background: var(--bg-surface);
43 border: 1px solid var(--border-default);
44 border-left: 3px solid var(--color-accent);
45 border-radius: var(--radius-md);
46 }
47
48 .br-default-eyebrow {
49 font-size: 10px;
50 font-weight: var(--weight-bold);
51 text-transform: uppercase;
52 letter-spacing: 0.08em;
53 color: var(--color-accent);
54 }
55
56 .br-default-name {
57 font-size: 18px;
58 font-weight: var(--weight-bold);
59 color: var(--text-primary);
60 font-family: var(--font-mono);
61 }
62
63 .br-default-commit {
64 font-size: 12px;
65 color: var(--text-muted);
66 }
67
68 // ── Main card ─────────────────────────────────────────────────────────────────
69
70 .br-card {
71 background: var(--bg-surface);
72 border: 1px solid var(--border-default);
73 border-radius: var(--radius-md);
74 overflow: hidden;
75 }
76
77 // ── Toolbar ───────────────────────────────────────────────────────────────────
78
79 .br-toolbar { border-bottom: 1px solid var(--border-subtle); }
80
81 .br-tab {
82 display: inline-flex;
83 align-items: center;
84 gap: 6px;
85 padding: 14px 12px;
86 font-size: 13px;
87 color: var(--text-muted);
88 text-decoration: none;
89 border-bottom: 2px solid transparent;
90 white-space: nowrap;
91 transition: color var(--transition-fast), border-color var(--transition-fast);
92 cursor: pointer;
93 background: none;
94 border-left: none;
95 border-right: none;
96 border-top: none;
97
98 &:hover { color: var(--text-secondary); text-decoration: none; }
99 &.br-tab--active {
100 color: var(--text-primary);
101 border-bottom-color: var(--color-accent);
102 font-weight: var(--weight-semibold);
103 }
104 }
105
106 .br-tab-ct {
107 background: var(--bg-overlay);
108 border: 1px solid var(--border-subtle);
109 border-radius: var(--radius-full);
110 font-size: 10px;
111 font-weight: var(--weight-semibold);
112 padding: 1px 6px;
113 font-family: var(--font-mono);
114 min-width: 18px;
115 text-align: center;
116 color: var(--text-muted);
117 }
118
119 .br-search {
120 display: flex;
121 align-items: center;
122 gap: 7px;
123 background: var(--bg-overlay);
124 border: 1px solid var(--border-subtle);
125 border-radius: var(--radius-sm);
126 padding: 5px 10px;
127 transition: border-color var(--transition-fast);
128 flex-shrink: 0;
129
130 &:focus-within { border-color: var(--color-accent); }
131
132 svg { color: var(--text-muted); flex-shrink: 0; }
133
134 input {
135 background: none;
136 border: none;
137 outline: none;
138 font-size: 12px;
139 color: var(--text-primary);
140 width: 160px;
141
142 &::placeholder { color: var(--text-muted); }
143 }
144 }
145
146 // ── Branch rows ───────────────────────────────────────────────────────────────
147
148 .br-row {
149 border-bottom: 1px solid var(--border-subtle);
150 transition: background var(--transition-fast);
151
152 &:last-child { border-bottom: none; }
153 &:hover { background: var(--bg-overlay); }
154 }
155
156 .br-row-icon {
157 border-radius: var(--radius-sm);
158
159 svg { width: 14px; height: 14px; display: block; }
160 }
161
162 .br-icon--feature { background: color-mix(in srgb, var(--color-success) 12%, transparent); color: var(--color-success); }
163 .br-icon--experiment { background: color-mix(in srgb, var(--color-purple) 12%, transparent); color: var(--color-purple); }
164 .br-icon--fix { background: color-mix(in srgb, var(--color-danger) 12%, transparent); color: var(--color-danger); }
165 .br-icon--structure { background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent); }
166 .br-icon--collab { background: color-mix(in srgb, var(--color-orange) 12%, transparent); color: var(--color-orange); }
167 .br-icon--source { background: color-mix(in srgb, var(--color-teal) 12%, transparent); color: var(--color-teal); }
168 .br-icon--version { background: color-mix(in srgb, var(--color-warning) 12%, transparent); color: var(--color-warning); }
169 .br-icon--default { background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent); }
170
171 .br-name {
172 font-size: 14px;
173 font-weight: var(--weight-semibold);
174 color: var(--text-primary);
175 font-family: var(--font-mono);
176 }
177
178 .br-type-badge {
179 display: inline-block;
180 padding: 1px 7px;
181 border-radius: var(--radius-sm);
182 font-size: 10px;
183 font-weight: var(--weight-bold);
184 font-family: var(--font-mono);
185 text-transform: uppercase;
186 letter-spacing: 0.04em;
187 }
188
189 .br-badge--feature { background: color-mix(in srgb, var(--color-success) 12%, transparent); color: var(--color-success); border: 1px solid color-mix(in srgb, var(--color-success) 25%, transparent); }
190 .br-badge--experiment { background: color-mix(in srgb, var(--color-purple) 12%, transparent); color: var(--color-purple); border: 1px solid color-mix(in srgb, var(--color-purple) 25%, transparent); }
191 .br-badge--fix { background: color-mix(in srgb, var(--color-danger) 12%, transparent); color: var(--color-danger); border: 1px solid color-mix(in srgb, var(--color-danger) 25%, transparent); }
192 .br-badge--structure { background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent); border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent); }
193 .br-badge--collab { background: color-mix(in srgb, var(--color-orange) 12%, transparent); color: var(--color-orange); border: 1px solid color-mix(in srgb, var(--color-orange) 25%, transparent); }
194 .br-badge--source { background: color-mix(in srgb, var(--color-teal) 12%, transparent); color: var(--color-teal); border: 1px solid color-mix(in srgb, var(--color-teal) 25%, transparent); }
195 .br-badge--version { background: color-mix(in srgb, var(--color-warning) 12%, transparent); color: var(--color-warning); border: 1px solid color-mix(in srgb, var(--color-warning) 25%, transparent); }
196
197 .br-commit-line { font-size: 12px; color: var(--text-muted); }
198
199 .br-sha {
200 font-family: var(--font-mono);
201 font-size: 11px;
202 color: var(--color-accent-link);
203 text-decoration: none;
204 flex-shrink: 0;
205 &:hover { text-decoration: underline; }
206 }
207
208 .br-commit-msg {
209 color: var(--text-muted);
210 white-space: nowrap;
211 overflow: hidden;
212 text-overflow: ellipsis;
213 }
214
215 .br-meta-line { font-size: 11px; color: var(--text-muted); }
216
217 .br-author { color: var(--text-secondary); }
218
219 .br-avatar {
220 width: 14px;
221 height: 14px;
222 border-radius: 50%;
223 display: inline-flex;
224 align-items: center;
225 justify-content: center;
226 font-size: 7px;
227 font-weight: var(--weight-bold);
228 color: #fff;
229 flex-shrink: 0;
230 }
231
232 .br-meta-dot { color: var(--border-default); }
233
234 // ── Divergence ────────────────────────────────────────────────────────────────
235
236 .br-div-line { font-size: 11px; }
237
238 .br-behind { color: var(--color-danger); font-family: var(--font-mono); }
239 .br-ahead { color: var(--color-success); font-family: var(--font-mono); }
240 .br-uptodate { color: var(--color-success); }
241
242 .br-div-track {
243 background: var(--bg-overlay);
244 border-radius: var(--radius-full);
245 }
246
247 .br-div-behind { background: var(--color-danger); height: 100%; }
248 .br-div-ahead { background: var(--color-success); height: 100%; }
249
250 // ── Domain dimension scores ───────────────────────────────────────────────────
251
252 .br-dim { font-size: 10px; color: var(--text-muted); }
253
254 .br-dim-label {
255 font-family: var(--font-mono);
256 text-transform: uppercase;
257 letter-spacing: 0.03em;
258 flex-shrink: 0;
259 min-width: 28px;
260 }
261
262 .br-dim-track {
263 background: var(--bg-overlay);
264 border-radius: var(--radius-full);
265 }
266
267 .br-dim-fill {
268 height: 100%;
269 background: var(--color-accent);
270 border-radius: var(--radius-full);
271 }
272
273 // ── Empty state ───────────────────────────────────────────────────────────────
274
275 .br-empty { color: var(--text-muted); }
276 .br-empty-icon { opacity: 0.3; margin-bottom: var(--space-1); }
277 .br-empty-title { font-size: 18px; font-weight: var(--weight-semibold); color: var(--text-secondary); }
278 .br-empty-desc { font-size: 14px; max-width: 380px; line-height: 1.6; }
File History 1 commit
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor 1 day ago