gabriel / musehub public
_blob.scss
276 lines 7.3 KB
Raw
sha256:34035d72cef530c1ab9d6a6f53be18d803dde705fc3157617d70352a96d0747b Merge branch 'fix/wire-push-external-parent-manifest' into dev Human 8 days ago
1 // ─────────────────────────────────────────────────────────────────────────────
2 // Page: Blob viewer (.blob2-* layout)
3 // File: src/scss/pages/_blob.scss
4 //
5 // STRUCTURAL LAYOUT ONLY — zero colors, zero typography here.
6 // Visual rules live in components/_blob.scss.
7 // Covers: blob.html, blame.html
8 // ─────────────────────────────────────────────────────────────────────────────
9
10 // ── Two-column layout ─────────────────────────────────────────────────────────
11
12 .blob2-layout {
13 display: grid;
14 grid-template-columns: 1fr;
15 gap: var(--space-4);
16 align-items: start;
17 min-height: 0;
18
19 &.blob2-panel-open {
20 grid-template-columns: 1fr 280px;
21 }
22
23 @media (max-width: 960px) {
24 &.blob2-panel-open { grid-template-columns: 1fr; }
25 }
26 }
27
28 .blob2-main {
29 display: flex;
30 flex-direction: column;
31 min-width: 0;
32 }
33
34 // ── Header bar ────────────────────────────────────────────────────────────────
35
36 .blob2-header {
37 display: flex;
38 align-items: center;
39 gap: var(--space-3);
40 padding: 8px 14px;
41 border-radius: var(--radius-md) var(--radius-md) 0 0;
42 }
43
44 .blob2-header-left {
45 display: flex;
46 align-items: center;
47 gap: 7px;
48 flex: 1;
49 min-width: 0;
50 }
51
52 .blob2-lang-dot {
53 width: 10px;
54 height: 10px;
55 flex-shrink: 0;
56 }
57
58 .blob2-header-meta {
59 display: flex;
60 align-items: center;
61 gap: var(--space-2);
62 flex-wrap: wrap;
63 flex-shrink: 0;
64 }
65
66 .blob2-meta-pill { padding: 2px 8px; }
67
68 .blob2-header-actions {
69 display: flex;
70 align-items: center;
71 gap: var(--space-2);
72 flex-shrink: 0;
73 }
74
75 // ── Last-modified bar ─────────────────────────────────────────────────────────
76
77 .blob2-lastmod {
78 display: flex;
79 align-items: center;
80 gap: 8px;
81 padding: 6px 14px;
82 flex-wrap: wrap;
83 }
84
85 .blob2-lastmod-sha { padding: 1px 6px; }
86
87 // ── Content area ──────────────────────────────────────────────────────────────
88
89 .blob2-content {
90 position: relative;
91 overflow: hidden;
92 }
93
94 .blob2-viewer { overflow-x: auto; }
95
96 .blob2-markdown { padding: var(--space-6) var(--space-7); }
97
98 // ── Code line table ───────────────────────────────────────────────────────────
99
100 .blob2-line-table {
101 width: 100%;
102 border-collapse: collapse;
103 border-spacing: 0;
104 }
105
106 .blob2-ln {
107 padding: 0 12px;
108 width: 1%;
109 white-space: nowrap;
110 text-align: right;
111 vertical-align: top;
112 user-select: none;
113 }
114
115 .blob2-code {
116 padding: 0 16px 0 12px;
117 white-space: pre;
118 width: 100%;
119 }
120
121 .blob2-binary-notice {
122 display: flex;
123 flex-direction: column;
124 align-items: center;
125 gap: var(--space-3);
126 padding: var(--space-10) var(--space-6);
127 text-align: center;
128 }
129
130 .blob2-empty { padding: var(--space-4) var(--space-4); }
131
132 .blob2-not-found {
133 display: flex;
134 flex-direction: column;
135 align-items: center;
136 gap: var(--space-3);
137 padding: var(--space-10) var(--space-6);
138 text-align: center;
139 }
140
141 // ── MIDI banner ───────────────────────────────────────────────────────────────
142
143 .blob2-midi-banner {
144 display: flex;
145 flex-direction: column;
146 align-items: center;
147 gap: var(--space-4);
148 padding: var(--space-8) var(--space-6);
149 text-align: center;
150 }
151
152 // ── Permalink float ───────────────────────────────────────────────────────────
153
154 .blob2-permalink-btn {
155 position: fixed;
156 bottom: var(--space-5);
157 right: var(--space-5);
158 display: flex;
159 align-items: center;
160 gap: 5px;
161 padding: 6px 14px;
162 z-index: var(--z-raised);
163 }
164
165 // ── File history timeline ─────────────────────────────────────────────────────
166
167 .blob2-history { margin-top: var(--space-4); }
168
169 .blob2-history-header {
170 display: flex;
171 align-items: center;
172 gap: 8px;
173 padding: 8px 14px;
174 }
175
176 .blob2-history-count { padding: 1px 7px; }
177
178 .blob2-history-row {
179 display: flex;
180 align-items: center;
181 gap: 8px;
182 padding: 7px 14px;
183 flex-wrap: wrap;
184 }
185
186 .blob2-history-sha { padding: 1px 6px; }
187
188 .blob2-history-prov {
189 display: flex;
190 align-items: center;
191 gap: 5px;
192 }
193
194 .blob2-history-time { margin-left: auto; }
195
196 // ── Outline panel ─────────────────────────────────────────────────────────────
197
198 // Bounded height, not position: sticky — see _layout.scss's
199 // .layout-two-col/.layout-sidebar comment for why. The inner
200 // .blob2-panel-pane (flex: 1; overflow-y: auto) is the actual
201 // independently-scrolling region; this just caps the panel's own height.
202 .blob2-panel {
203 max-height: calc(100dvh - var(--sticky-offset, var(--header-height)) - var(--space-8));
204 overflow: hidden;
205 display: flex;
206 flex-direction: column;
207
208 @media (max-width: 900px) {
209 max-height: none;
210 overflow-y: visible;
211 }
212 }
213
214 .blob2-panel-tabs {
215 display: flex;
216 align-items: center;
217 padding: 0 4px;
218 flex-shrink: 0;
219 }
220
221 .blob2-panel-tab {
222 padding: 8px 12px;
223 flex-shrink: 0;
224 }
225
226 .blob2-panel-pane {
227 overflow-y: auto;
228 flex: 1;
229 }
230
231 .blob2-panel-empty { padding: var(--space-4); }
232
233 // ── Outline rows ──────────────────────────────────────────────────────────────
234
235 .blob2-outline-row {
236 display: flex;
237 align-items: center;
238 gap: 7px;
239 padding: 5px 12px;
240 cursor: pointer;
241 }
242
243 .blob2-outline-op { padding: 1px 5px; }
244 .blob2-outline-addr { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
245 .blob2-outline-count { padding: 1px 5px; flex-shrink: 0; }
246 .blob2-outline-time { flex-shrink: 0; }
247
248 // ── Info tab rows ─────────────────────────────────────────────────────────────
249
250 .blob2-info-section--sep { padding-top: var(--space-3); margin-top: var(--space-3); }
251
252 .blob2-info-row {
253 display: flex;
254 align-items: flex-start;
255 gap: var(--space-2);
256 padding: 3px 12px;
257 }
258
259 .blob2-info-label { min-width: 64px; flex-shrink: 0; }
260
261 .blob2-info-value { flex: 1; min-width: 0; }
262
263 .blob2-info-label-block { padding: var(--space-2) 12px 2px; }
264
265 .blob2-info-addr {
266 display: flex;
267 align-items: center;
268 gap: 5px;
269 padding: 3px 12px;
270 }
271
272 .blob2-copy-addr {
273 display: flex;
274 align-items: center;
275 padding: 2px;
276 }
File History 14 commits
sha256:34035d72cef530c1ab9d6a6f53be18d803dde705fc3157617d70352a96d0747b Merge branch 'fix/wire-push-external-parent-manifest' into dev Human 8 days ago
sha256:fc04e4cae9e1774d6a21b65c45daeed0e6787eb581d13aa1b03bfe9384a34226 Merge branch 'fix/two-column-scroll-layout' into dev Human 8 days ago
sha256:408916fc5973ba59c6e4eebaa80ebdcc801c0a63205651e25009d11548f79454 chore: bump version to 0.2.0.dev2 — nightly.2, matching muse Sonnet 4.6 patch 11 days ago
sha256:d035733f21ccff27735fddebfbbe0ed24565a32a22db8de5885402262671ecd2 chore: bump version to 0.2.0rc15 for musehub#113 fix release Sonnet 4.6 patch 14 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 29 days ago
sha256:a59da49c4611b970fc4b6ae48678ce4943261c213a07ddbd73ce9201df869b4a fix: remove false-positive proposal_comments index drop fro… Sonnet 4.6 patch 33 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 35 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