gabriel / musehub public
_branches.scss
278 lines 10.0 KB
Raw
sha256:fc04e4cae9e1774d6a21b65c45daeed0e6787eb581d13aa1b03bfe9384a34226 Merge branch 'fix/two-column-scroll-layout' into dev Human 9 days 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 13 commits
sha256:fc04e4cae9e1774d6a21b65c45daeed0e6787eb581d13aa1b03bfe9384a34226 Merge branch 'fix/two-column-scroll-layout' into dev Human 9 days ago
sha256:408916fc5973ba59c6e4eebaa80ebdcc801c0a63205651e25009d11548f79454 chore: bump version to 0.2.0.dev2 — nightly.2, matching muse Sonnet 4.6 patch 12 days ago
sha256:d035733f21ccff27735fddebfbbe0ed24565a32a22db8de5885402262671ecd2 chore: bump version to 0.2.0rc15 for musehub#113 fix release Sonnet 4.6 patch 15 days ago
sha256:0032d6cfa33bc3c8367436ad768e7dd0e339b4332153160247da8266cb5fa352 Merge branch 'task/version-tags-phase3-server' into dev Human 17 days ago
sha256:4669620efda9ff41c55bdefd1f7bfe1c239d468428744c84ead9957e5a003a53 merge: rescue snapshot-recovery hardening (c00aa21d) into d… Opus 4.8 minor 30 days ago
sha256:a59da49c4611b970fc4b6ae48678ce4943261c213a07ddbd73ce9201df869b4a fix: remove false-positive proposal_comments index drop fro… Sonnet 4.6 patch 34 days ago
sha256:0a240d6dbff234f07d98a28a4a9a68db702f3f9ff9260196f24219bdb1c0b6f3 feat: render markdown mists as HTML with heading anchor links Sonnet 4.6 patch 34 days ago
sha256:24a7d47486ebc4ebd1832830580e177ec6f877b48dced8c000e198cdec4ce9d6 Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump … Human 35 days ago
sha256:b9ff931d147e0114a1f17060f415b89ed551c170a91ff226c70437aa5c85f9ee Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump … Human 35 days ago
sha256:d1122d21e73471879b460037b22c0b50fded7c423444a176f248428f75dac39c Merge 'task/fix-issue-pagination-cursor' into 'dev' — propo… Human 35 days ago
sha256:01e18975e73d2b3cd5b6db7929c895bef9aa6e0d4391dc5b2adfc548b41318dd Merge 'feat/adding-debug-logs-to-staging' into 'dev' — prop… Human 36 days ago
sha256:6b1949fc2797ca4c1936a637a4cbfec828ef56cf52398a2e74ca3c4f494e728f fix: use wire_bytes not mpack_bytes_raw in compute_object_b… Sonnet 4.6 patch 48 days ago
sha256:b99f2455dc346966d040133f5203297e6e3ef5803a93728a2c30568d0a0f7583 rename: delta_add → delta_upsert across wire format, models… Sonnet 4.6 patch 50 days ago