gabriel / musehub public
_blob.scss
268 lines 7.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 // 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
18 &.blob2-panel-open {
19 grid-template-columns: 1fr 280px;
20 }
21
22 @media (max-width: 960px) {
23 &.blob2-panel-open { grid-template-columns: 1fr; }
24 }
25 }
26
27 .blob2-main {
28 display: flex;
29 flex-direction: column;
30 min-width: 0;
31 }
32
33 // ── Header bar ────────────────────────────────────────────────────────────────
34
35 .blob2-header {
36 display: flex;
37 align-items: center;
38 gap: var(--space-3);
39 padding: 8px 14px;
40 border-radius: var(--radius-md) var(--radius-md) 0 0;
41 }
42
43 .blob2-header-left {
44 display: flex;
45 align-items: center;
46 gap: 7px;
47 flex: 1;
48 min-width: 0;
49 }
50
51 .blob2-lang-dot {
52 width: 10px;
53 height: 10px;
54 flex-shrink: 0;
55 }
56
57 .blob2-header-meta {
58 display: flex;
59 align-items: center;
60 gap: var(--space-2);
61 flex-wrap: wrap;
62 flex-shrink: 0;
63 }
64
65 .blob2-meta-pill { padding: 2px 8px; }
66
67 .blob2-header-actions {
68 display: flex;
69 align-items: center;
70 gap: var(--space-2);
71 flex-shrink: 0;
72 }
73
74 // ── Last-modified bar ─────────────────────────────────────────────────────────
75
76 .blob2-lastmod {
77 display: flex;
78 align-items: center;
79 gap: 8px;
80 padding: 6px 14px;
81 flex-wrap: wrap;
82 }
83
84 .blob2-lastmod-sha { padding: 1px 6px; }
85
86 // ── Content area ──────────────────────────────────────────────────────────────
87
88 .blob2-content {
89 position: relative;
90 overflow: hidden;
91 }
92
93 .blob2-viewer { overflow-x: auto; }
94
95 .blob2-markdown { padding: var(--space-6) var(--space-7); }
96
97 // ── Code line table ───────────────────────────────────────────────────────────
98
99 .blob2-line-table {
100 width: 100%;
101 border-collapse: collapse;
102 border-spacing: 0;
103 }
104
105 .blob2-ln {
106 padding: 0 12px;
107 width: 1%;
108 white-space: nowrap;
109 text-align: right;
110 vertical-align: top;
111 user-select: none;
112 }
113
114 .blob2-code {
115 padding: 0 16px 0 12px;
116 white-space: pre;
117 width: 100%;
118 }
119
120 .blob2-binary-notice {
121 display: flex;
122 flex-direction: column;
123 align-items: center;
124 gap: var(--space-3);
125 padding: var(--space-10) var(--space-6);
126 text-align: center;
127 }
128
129 .blob2-empty { padding: var(--space-4) var(--space-4); }
130
131 .blob2-not-found {
132 display: flex;
133 flex-direction: column;
134 align-items: center;
135 gap: var(--space-3);
136 padding: var(--space-10) var(--space-6);
137 text-align: center;
138 }
139
140 // ── MIDI banner ───────────────────────────────────────────────────────────────
141
142 .blob2-midi-banner {
143 display: flex;
144 flex-direction: column;
145 align-items: center;
146 gap: var(--space-4);
147 padding: var(--space-8) var(--space-6);
148 text-align: center;
149 }
150
151 // ── Permalink float ───────────────────────────────────────────────────────────
152
153 .blob2-permalink-btn {
154 position: fixed;
155 bottom: var(--space-5);
156 right: var(--space-5);
157 display: flex;
158 align-items: center;
159 gap: 5px;
160 padding: 6px 14px;
161 z-index: var(--z-raised);
162 }
163
164 // ── File history timeline ─────────────────────────────────────────────────────
165
166 .blob2-history { margin-top: var(--space-4); }
167
168 .blob2-history-header {
169 display: flex;
170 align-items: center;
171 gap: 8px;
172 padding: 8px 14px;
173 }
174
175 .blob2-history-count { padding: 1px 7px; }
176
177 .blob2-history-row {
178 display: flex;
179 align-items: center;
180 gap: 8px;
181 padding: 7px 14px;
182 flex-wrap: wrap;
183 }
184
185 .blob2-history-sha { padding: 1px 6px; }
186
187 .blob2-history-prov {
188 display: flex;
189 align-items: center;
190 gap: 5px;
191 }
192
193 .blob2-history-time { margin-left: auto; }
194
195 // ── Outline panel ─────────────────────────────────────────────────────────────
196
197 .blob2-panel {
198 position: sticky;
199 top: calc(var(--sticky-offset, 80px) + var(--space-4));
200 max-height: calc(100vh - var(--sticky-offset, 80px) - var(--space-8));
201 overflow: hidden;
202 display: flex;
203 flex-direction: column;
204 }
205
206 .blob2-panel-tabs {
207 display: flex;
208 align-items: center;
209 padding: 0 4px;
210 flex-shrink: 0;
211 }
212
213 .blob2-panel-tab {
214 padding: 8px 12px;
215 flex-shrink: 0;
216 }
217
218 .blob2-panel-pane {
219 overflow-y: auto;
220 flex: 1;
221 }
222
223 .blob2-panel-empty { padding: var(--space-4); }
224
225 // ── Outline rows ──────────────────────────────────────────────────────────────
226
227 .blob2-outline-row {
228 display: flex;
229 align-items: center;
230 gap: 7px;
231 padding: 5px 12px;
232 cursor: pointer;
233 }
234
235 .blob2-outline-op { padding: 1px 5px; }
236 .blob2-outline-addr { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
237 .blob2-outline-count { padding: 1px 5px; flex-shrink: 0; }
238 .blob2-outline-time { flex-shrink: 0; }
239
240 // ── Info tab rows ─────────────────────────────────────────────────────────────
241
242 .blob2-info-section--sep { padding-top: var(--space-3); margin-top: var(--space-3); }
243
244 .blob2-info-row {
245 display: flex;
246 align-items: flex-start;
247 gap: var(--space-2);
248 padding: 3px 12px;
249 }
250
251 .blob2-info-label { min-width: 64px; flex-shrink: 0; }
252
253 .blob2-info-value { flex: 1; min-width: 0; }
254
255 .blob2-info-label-block { padding: var(--space-2) 12px 2px; }
256
257 .blob2-info-addr {
258 display: flex;
259 align-items: center;
260 gap: 5px;
261 padding: 3px 12px;
262 }
263
264 .blob2-copy-addr {
265 display: flex;
266 align-items: center;
267 padding: 2px;
268 }
File History 1 commit
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2 feat: add repair-commit wire endpoint (API parity with repa… Opus 4.8 minor 1 day ago