PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.11
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.11
1.1.11 1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 All 35 releases
desktop-mode / apps / code-blue / code-blue.css

code-blue.css in OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin 1.1.11, at apps/code-blue/code-blue.css

380 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Code Blue — window styles.
3 *
4 * Only what the `<os-*>` components don't already carry: the fixed-
5 * height regions, the card chrome, the stat-tile typography, the
6 * issue rows. Every colour reads a token with the pre-brand admin
7 * literal as its floor, and the four severity tones resolve through
8 * the status tokens.
9 */
10
11 .os-cb {
12 block-size: 100%;
13 padding: 12px 14px;
14 box-sizing: border-box;
15 /* The window never page-scrolls: every region is fixed-height and
16 only the issue list scrolls, so a long list can't crush the chart. */
17 overflow: hidden;
18 }
19
20 .os-cb > :not( .os-cb__issues ) {
21 flex: none;
22 }
23
24 /*
25 * A narrow container — a phone, or a desktop window pulled in — has no
26 * height to spare for fixed regions: the toolbar wraps to three rows,
27 * the stat tiles to two, the chart keeps its height, and the issue list
28 * was left its 120px minimum with its own scrollbar inside it, which a
29 * thumb reads as "this does not scroll". So at this width the window
30 * page-scrolls instead: every region takes its natural height and the
31 * root is the one scroller. The two fields stop demanding 200px each
32 * and share the row.
33 */
34 @container ( max-width: 640px ) {
35 .os-cb {
36 overflow-y: auto;
37 -webkit-overflow-scrolling: touch;
38 }
39
40 .os-cb__source,
41 .os-cb__search {
42 min-inline-size: 0;
43 flex: 1 1 140px;
44 }
45
46 .os-cb > .os-cb__issues {
47 flex: none;
48 min-block-size: 0;
49 }
50
51 .os-cb__list {
52 flex: none;
53 overflow-y: visible;
54 }
55 }
56
57 /* The same, keyed on the shell's phone mode: the phone experience at
58 any width (a wide browser previewing it, a phone turned sideways),
59 which no size query can express. */
60 html[data-os-mode="mobile"] .os-cb {
61 overflow-y: auto;
62 -webkit-overflow-scrolling: touch;
63 }
64
65 html[data-os-mode="mobile"] .os-cb__source,
66 html[data-os-mode="mobile"] .os-cb__search {
67 min-inline-size: 0;
68 flex: 1 1 140px;
69 }
70
71 html[data-os-mode="mobile"] .os-cb > .os-cb__issues {
72 flex: none;
73 min-block-size: 0;
74 }
75
76 html[data-os-mode="mobile"] .os-cb__list {
77 flex: none;
78 overflow-y: visible;
79 }
80
81 .os-cb__source,
82 .os-cb__search {
83 min-inline-size: 200px;
84 }
85
86 /* The toolbar aligns to its bottom edge; the switch track is shorter
87 than the buttons beside it, so lift it onto their visual centre. */
88 .os-cb__auto {
89 margin-block-end: 6px;
90 }
91
92 /* ---------- Severity swatches ---------------------------------------- */
93
94 /* The tone-to-colour mapping itself lives in app-runtime.css (the
95 shared `data-tone` contract); these consumers only read it back. */
96 .os-cb-swatch {
97 display: inline-block;
98 inline-size: 10px;
99 block-size: 10px;
100 border-radius: 3px;
101 flex: none;
102 background: var( --os-app-tone, var( --os-ui-fg-muted, #646970 ) );
103 }
104
105 /* ---------- Stat tiles ---------------------------------------------- */
106
107 /* Column count lives here rather than in a `columns` attribute so the
108 container query below can override it (the attribute writes an
109 inline style, which would win). */
110 .os-cb__stats {
111 --os-ui-grid-columns: repeat( 5, minmax( 0, 1fr ) );
112 }
113
114 @container ( max-width: 760px ) {
115 .os-cb__stats {
116 --os-ui-grid-columns: repeat( 3, minmax( 0, 1fr ) );
117 }
118 }
119
120 /* The tiles are the kit's <os-stat>; only Code Blue's variations on
121 its defaults live here: neutral (not accent) values on an elevated
122 card surface, at the old tile's size and weight. */
123 .os-cb__stats os-stat {
124 --os-ui-stat-bg: var( --os-ui-surface-elevated, #fff );
125 --os-ui-stat-value-color: var( --os-ui-fg, #1d2327 );
126 --os-ui-stat-value-size: 22px;
127 }
128
129 /* ---------- Cards --------------------------------------------------- */
130
131 .os-cb__card {
132 display: block;
133 border: 1px solid var( --os-ui-border, #dcdcde );
134 border-radius: 8px;
135 background: var( --os-ui-surface-elevated, #fff );
136 overflow: hidden;
137 }
138
139 .os-cb__card-head,
140 .os-cb__chart::part( head ) {
141 display: flex;
142 align-items: center;
143 justify-content: space-between;
144 gap: 10px;
145 flex-wrap: wrap;
146 margin: 0;
147 padding: 10px 14px;
148 border-block-end: 1px solid var( --os-ui-border, #dcdcde );
149 }
150
151 .os-cb__card-title {
152 margin: 0;
153 font-size: 13px;
154 font-weight: 600;
155 color: var( --os-ui-fg, #1d2327 );
156 }
157
158 .os-cb__chart::part( chart ) {
159 padding: 8px 6px 4px;
160 }
161
162 /* ---------- Issues -------------------------------------------------- */
163
164 .os-cb__issues {
165 display: flex;
166 flex-direction: column;
167 flex: 1;
168 min-block-size: 120px;
169 }
170
171 .os-cb__list {
172 margin: 0;
173 padding: 0;
174 list-style: none;
175 flex: 1;
176 min-block-size: 0;
177 overflow-y: auto;
178 }
179
180 .os-cb__list-empty {
181 padding: 20px;
182 list-style: none;
183 }
184
185 .os-cb-issue {
186 border-block-end: 1px solid var( --os-ui-border, #dcdcde );
187 border-inline-start: 3px solid var( --os-app-tone, transparent );
188 }
189
190 .os-cb-issue:last-child {
191 border-block-end: none;
192 }
193
194 /*
195 * The whole row is the control — an error list is scanned, and asking
196 * for a chevron would be asking for aim. It stays a `<button>`, which
197 * means the text inside it cannot be selected: every engine suppresses
198 * selection inside a form control. Copying is the detail panel's job
199 * instead, where the message and the trace are `<os-code copy>` and
200 * plain selectable markup rather than button content.
201 */
202 .os-cb-issue__row {
203 display: flex;
204 align-items: flex-start;
205 gap: 10px;
206 inline-size: 100%;
207 padding: 8px 12px;
208 border: none;
209 background: transparent;
210 color: inherit;
211 font: inherit;
212 text-align: start;
213 cursor: pointer;
214 }
215
216 .os-cb-issue__row:hover {
217 background: var( --os-ui-surface-subtle, rgba( 0, 0, 0, 0.03 ) );
218 }
219
220 .os-cb-issue__row:focus-visible {
221 outline: 2px solid var( --os-ui-accent, #2271b1 );
222 outline-offset: -2px;
223 }
224
225 .os-cb-issue__level {
226 display: inline-flex;
227 align-items: center;
228 gap: 6px;
229 flex: none;
230 inline-size: 150px;
231 min-block-size: 18px;
232 overflow: hidden;
233 }
234
235 .os-cb-issue__label {
236 font-size: 11px;
237 text-transform: uppercase;
238 letter-spacing: 0.03em;
239 color: var( --os-ui-fg-muted, #646970 );
240 white-space: nowrap;
241 overflow: hidden;
242 text-overflow: ellipsis;
243 }
244
245 /*
246 * The message wraps rather than ellipsising. A fatal error is
247 * routinely longer than any window anyone wants to open, and reading
248 * one should not cost a resize — the row grows by a line or two
249 * instead, which a list that scrolls can afford.
250 */
251 .os-cb-issue__message {
252 flex: 1;
253 min-inline-size: 0;
254 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
255 font-size: 12px;
256 line-height: 18px;
257 white-space: pre-wrap;
258 overflow-wrap: anywhere;
259 }
260
261 .os-cb-issue__meta {
262 display: inline-flex;
263 align-items: center;
264 gap: 10px;
265 flex: none;
266 min-block-size: 18px;
267 color: var( --os-ui-fg-muted, #646970 );
268 font-size: 12px;
269 }
270
271 .os-cb-issue__file {
272 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
273 font-size: 11px;
274 max-inline-size: 200px;
275 white-space: nowrap;
276 overflow: hidden;
277 text-overflow: ellipsis;
278 direction: rtl; /* Ellipsize the start of long basenames, keep the :line end visible. */
279 text-align: end;
280 }
281
282 .os-cb-issue__when {
283 min-inline-size: 48px;
284 text-align: end;
285 }
286
287 @container ( max-width: 640px ) {
288 .os-cb-issue__level {
289 inline-size: auto;
290 }
291
292 .os-cb-issue__label,
293 .os-cb-issue__file {
294 display: none;
295 }
296 }
297
298 /*
299 * The origin badge outlives the file path at narrow widths: "which
300 * plugin" survives a resize that "which file" does not, and it is the
301 * more useful half of the pair when only one fits.
302 */
303 @container ( max-width: 480px ) {
304 .os-cb-issue__origin {
305 display: none;
306 }
307 }
308
309 .os-cb-issue__detail {
310 display: flex;
311 flex-direction: column;
312 gap: 10px;
313 padding: 4px 14px 14px 22px;
314 }
315
316 /*
317 * The message again, in full and with a copy button — the row above
318 * shows the same text, but that row is a `<button>`, so this is the
319 * only place a reader can take the error away with them. Everything in
320 * the detail panel is plain markup outside the control: selectable by
321 * drag, and copyable by button for the two things anyone ever copies.
322 */
323 .os-cb-issue__full {
324 font-size: 12px;
325 --os-ui-code-block-max-block-size: 220px;
326 }
327
328 /*
329 * Tighter than the kit default, and the values are monospace: these
330 * facts are file paths and timestamps read against each other.
331 */
332 .os-cb-issue__facts {
333 --os-ui-facts-font-size: 12px;
334 --os-ui-facts-row-gap: 2px;
335 }
336
337 .os-cb-issue__facts os-fact::part( value ) {
338 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
339 }
340
341 /*
342 * The two things anyone does with an error they cannot immediately
343 * fix: hand it to someone else, or go and look it up.
344 */
345 .os-cb-issue__actions {
346 margin-block-start: 2px;
347 }
348
349 .os-cb-issue__search {
350 font-size: 12px;
351 align-self: center;
352 color: var( --os-ui-accent, #2271b1 );
353 text-decoration: none;
354 }
355
356 .os-cb-issue__search:hover,
357 .os-cb-issue__search:focus-visible {
358 text-decoration: underline;
359 }
360
361 .os-cb-issue__times {
362 font-size: 11px;
363 }
364
365 .os-cb-issue__times-label {
366 color: var( --os-ui-fg-muted, #646970 );
367 }
368
369 .os-cb-issue__trace {
370 font-size: 11px;
371 --os-ui-code-block-max-block-size: 320px;
372 }
373
374 /* ---------- Footer -------------------------------------------------- */
375
376 .os-cb__footer {
377 font-size: 12px;
378 color: var( --os-ui-fg-muted, #646970 );
379 }
380