PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.12
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.12
1.1.12 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 All 36 releases
desktop-mode / apps / posts / posts.css

posts.css in OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin 1.1.12, at apps/posts/posts.css

477 lines 11.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * OpenStation — Posts app styles.
3 *
4 * The list layout (toolbar, body, pager, tabs, the phone rules) is the
5 * framework's `.os-app-list*` family in `assets/css/app-runtime.css`;
6 * this sheet owns what is the Posts window's alone: the term canvas —
7 * one chrome (`.os-term-canvas*`) the Categories mind map and the Tags
8 * cloud both wear, each with a modifier for its own background — and
9 * its phone fold. Cell-content styles are inlined in `parts/cells/`,
10 * since <os-table> paints into its own shadow root.
11 */
12
13 .os-posts__terms-host {
14 display: flex;
15 flex-direction: column;
16 flex: 1 1 auto;
17 min-height: 0;
18 min-width: 0;
19 }
20
21 /* The editor embedded in the "Add New" tab — `wp.os.embedAdminPage()`
22 * puts a full-size iframe in here, so the host has to be the panel's
23 * whole box rather than shrink to a zero-height child. */
24 .os-posts__embed-host {
25 display: flex;
26 flex: 1 1 auto;
27 min-height: 0;
28 min-width: 0;
29 }
30
31 /* ---------------------------------------------------------------
32 * The term canvas: a toolbar across the top, the Pixi stage on the
33 * left, a fixed-width sidebar editor on the right. The Pixi side
34 * paints the terms, the post satellites and the pager into the
35 * canvas; this sheet owns the chrome around it. */
36 .os-term-canvas {
37 flex: 1 1 auto;
38 min-height: 0;
39 min-width: 0;
40 display: flex;
41 flex-direction: column;
42 background: var( --os-ui-surface, #fff );
43 }
44
45 /* The mind map's surface: a dot grid — the "infinite thinking
46 * surface" texture — under two theme-tinted vignettes for depth. */
47 .os-term-canvas.os-mindmap {
48 background:
49 radial-gradient(
50 circle,
51 var( --os-ui-border, rgba( 0, 0, 0, 0.06 ) ) 1px,
52 transparent 1.5px
53 ) 0 0 / 24px 24px,
54 radial-gradient(
55 ellipse at 28% 22%,
56 color-mix(
57 in srgb,
58 var( --wp-admin-theme-color, #2271b1 ) 8%,
59 transparent
60 ),
61 transparent 60%
62 ),
63 radial-gradient(
64 ellipse at 78% 80%,
65 color-mix(
66 in srgb,
67 var( --wp-admin-theme-color, #2271b1 ) 5%,
68 transparent
69 ),
70 transparent 58%
71 ),
72 var( --os-ui-surface, #fff );
73 }
74
75 /* The tag cloud's surface: faint diagonal pinstripes — a sticker wall. */
76 .os-term-canvas.os-tagcloud {
77 background:
78 repeating-linear-gradient(
79 135deg,
80 transparent 0,
81 transparent 22px,
82 color-mix( in srgb, var( --wp-admin-theme-color, #2271b1 ) 4%, transparent ) 22px,
83 color-mix( in srgb, var( --wp-admin-theme-color, #2271b1 ) 4%, transparent ) 23px
84 ),
85 radial-gradient(
86 circle at 30% 20%,
87 color-mix(
88 in srgb,
89 var( --wp-admin-theme-color, #2271b1 ) 6%,
90 transparent
91 ),
92 transparent 65%
93 ),
94 var( --os-ui-surface, #fff );
95 }
96
97 .os-term-canvas__toolbar {
98 display: flex;
99 align-items: center;
100 gap: 10px;
101 padding: 10px 14px;
102 border-bottom: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
103 background: var( --os-ui-surface, rgba( 255, 255, 255, 0.6 ) );
104 backdrop-filter: blur( 8px );
105 /* A stacking context, so the search dropdown paints above the
106 * pixi canvas in the layout sibling below. Without it the canvas
107 * (later in the DOM, no z-index) wins the paint order and the
108 * dropdown renders BEHIND the chips — clicks land on the canvas. */
109 position: relative;
110 z-index: 2;
111 }
112
113 .os-term-canvas__btn {
114 appearance: none;
115 display: inline-flex;
116 align-items: center;
117 gap: 4px;
118 padding: 6px 10px;
119 font: inherit;
120 font-size: 12px;
121 font-weight: 500;
122 border: 1px solid var( --os-ui-border, #c3c4c7 );
123 border-radius: 6px;
124 background: transparent;
125 color: var( --os-ui-fg, #1d2327 );
126 cursor: pointer;
127 transition: background-color 0.12s ease, border-color 0.12s ease,
128 color 0.12s ease;
129 }
130
131 .os-term-canvas__btn:hover {
132 background: var( --os-ui-hover, rgba( 0, 0, 0, 0.04 ) );
133 border-color: var( --wp-admin-theme-color, #2271b1 );
134 }
135
136 .os-term-canvas__btn--primary {
137 background: var( --wp-admin-theme-color, #2271b1 );
138 color: var( --os-ui-accent-ink, var( --os-ui-fg-on-accent, #fff ) );
139 border-color: transparent;
140 }
141
142 .os-term-canvas__btn--primary:hover {
143 filter: brightness( 1.05 );
144 background: var( --wp-admin-theme-color, #2271b1 );
145 color: var( --os-ui-accent-ink, var( --os-ui-fg-on-accent, #fff ) );
146 }
147
148 .os-term-canvas__btn--secondary {
149 background: var( --os-ui-hover, rgba( 0, 0, 0, 0.04 ) );
150 }
151
152 .os-term-canvas__btn--danger {
153 color: var( --os-ui-danger, #d63638 );
154 border-color: transparent;
155 }
156
157 .os-term-canvas__btn--danger:hover {
158 background: color-mix( in srgb, var( --os-ui-danger, #d63638 ) 10%, transparent );
159 border-color: color-mix( in srgb, var( --os-ui-danger, #d63638 ) 35%, transparent );
160 }
161
162 .os-term-canvas__btn--danger.is-armed {
163 background: var( --os-ui-danger, #d63638 );
164 color: var( --os-ui-fg-on-accent, #fff );
165 border-color: transparent;
166 }
167
168 .os-term-canvas__hint {
169 flex: 1 1 auto;
170 font-size: 12px;
171 font-style: italic;
172 color: var( --os-ui-fg-muted, #50575e );
173 text-align: end;
174 overflow: hidden;
175 text-overflow: ellipsis;
176 white-space: nowrap;
177 }
178
179 .os-term-canvas__search {
180 position: relative;
181 flex: 0 1 280px;
182 min-width: 180px;
183 }
184
185 .os-term-canvas__search-input {
186 width: 100%;
187 padding: 6px 10px;
188 border: 1px solid var( --os-ui-border, #d8dde4 );
189 border-radius: 6px;
190 background: var( --os-ui-surface, #fff );
191 color: inherit;
192 font: inherit;
193 font-size: 13px;
194 }
195
196 .os-term-canvas__search-input:focus {
197 outline: none;
198 border-color: var( --os-ui-accent, var( --wp-admin-theme-color, #2271b1 ) );
199 box-shadow: 0 0 0 3px
200 var( --os-ui-accent-soft, rgba( 34, 113, 177, 0.18 ) );
201 }
202
203 .os-term-canvas__search-results {
204 position: absolute;
205 top: calc( 100% + 4px );
206 inset-inline-start: 0;
207 inset-inline-end: 0;
208 margin: 0;
209 padding: 4px;
210 list-style: none;
211 background: var( --os-ui-surface-elevated, #fff );
212 border: 1px solid var( --os-ui-border, #d8dde4 );
213 border-radius: 8px;
214 box-shadow: 0 6px 18px rgba( 17, 24, 39, 0.08 );
215 z-index: 100;
216 max-height: 300px;
217 overflow-y: auto;
218 }
219
220 .os-term-canvas__search-result {
221 display: flex;
222 align-items: center;
223 justify-content: space-between;
224 gap: 8px;
225 width: 100%;
226 padding: 6px 10px;
227 background: transparent;
228 border: 0;
229 border-radius: 6px;
230 color: inherit;
231 cursor: pointer;
232 text-align: start;
233 font: inherit;
234 font-size: 13px;
235 }
236
237 .os-term-canvas__search-result:hover,
238 .os-term-canvas__search-result.is-active {
239 background: var( --os-ui-hover, rgba( 79, 139, 243, 0.08 ) );
240 }
241
242 .os-term-canvas__search-title {
243 flex: 1;
244 overflow: hidden;
245 text-overflow: ellipsis;
246 white-space: nowrap;
247 }
248
249 .os-term-canvas__search-meta {
250 font-size: 11px;
251 color: var( --os-ui-fg-muted, #6b7280 );
252 white-space: nowrap;
253 }
254
255 /* Two columns: the Pixi stage on the left, the sidebar on the right.
256 * The sidebar always renders — the empty-state copy when nothing is
257 * focused, the editor form otherwise — so the editing surface never
258 * covers the terms. */
259 .os-term-canvas__layout {
260 display: flex;
261 flex: 1 1 auto;
262 min-height: 0;
263 min-width: 0;
264 }
265
266 .os-term-canvas__stage {
267 position: relative;
268 flex: 1 1 auto;
269 min-height: 0;
270 min-width: 0;
271 overflow: hidden;
272 /* Fades in once the first fit-to-view has run: without it the
273 * canvas paints its unfitted transform on the frame between mount
274 * and the first rAF, which reads as a flash. */
275 transition: opacity 200ms ease;
276 }
277
278 .os-term-canvas__stage.is-loading {
279 opacity: 0;
280 }
281
282 .os-term-canvas__sidebar {
283 flex: 0 0 320px;
284 display: flex;
285 flex-direction: column;
286 gap: 12px;
287 padding: 16px;
288 border-inline-start: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
289 background: var( --os-ui-surface, #fff );
290 color: var( --os-ui-fg, #1d2327 );
291 overflow-y: auto;
292 min-height: 0;
293 }
294
295 .os-term-canvas__sidebar-empty {
296 flex: 1 1 auto;
297 display: flex;
298 flex-direction: column;
299 align-items: center;
300 justify-content: center;
301 gap: 6px;
302 color: var( --os-ui-fg-muted, #50575e );
303 text-align: center;
304 padding: 24px 8px;
305 }
306
307 .os-term-canvas__sidebar-empty .dashicons {
308 font-size: 36px;
309 width: 36px;
310 height: 36px;
311 opacity: 0.5;
312 }
313
314 .os-term-canvas__sidebar-empty-title {
315 font-size: 13px;
316 font-weight: 600;
317 color: var( --os-ui-fg, #1d2327 );
318 margin: 0;
319 }
320
321 .os-term-canvas__sidebar-empty-hint {
322 font-size: 12px;
323 font-style: italic;
324 max-width: 220px;
325 margin: 0;
326 }
327
328 /* The cloud's hint runs a line longer. */
329 .os-tagcloud .os-term-canvas__sidebar-empty-hint {
330 max-width: 240px;
331 }
332
333 .os-term-canvas__sidebar-header {
334 display: flex;
335 align-items: center;
336 gap: 8px;
337 font-size: 11px;
338 font-weight: 600;
339 letter-spacing: 0.04em;
340 text-transform: uppercase;
341 color: var( --os-ui-fg-muted, #50575e );
342 }
343
344 .os-term-canvas__sidebar-dot {
345 width: 10px;
346 height: 10px;
347 border-radius: 50%;
348 flex: 0 0 10px;
349 }
350
351 .os-term-canvas__sidebar-slug {
352 overflow: hidden;
353 text-overflow: ellipsis;
354 white-space: nowrap;
355 }
356
357 .os-term-canvas__sidebar-label {
358 font-size: 11px;
359 font-weight: 500;
360 color: var( --os-ui-fg-muted, #50575e );
361 margin-block-start: 4px;
362 }
363
364 .os-term-canvas__sidebar-meta {
365 font-size: 12px;
366 color: var( --os-ui-fg-muted, #50575e );
367 padding-block: 4px;
368 }
369
370 .os-term-canvas__canvas {
371 display: block;
372 position: absolute;
373 inset: 0;
374 width: 100%;
375 height: 100%;
376 touch-action: none;
377 }
378
379 .os-term-canvas__editor-name {
380 appearance: none;
381 font: inherit;
382 font-size: 14px;
383 font-weight: 600;
384 padding: 6px 8px;
385 border: 1px solid var( --os-ui-border, #c3c4c7 );
386 border-radius: 6px;
387 background: var( --os-ui-surface, #fff );
388 color: inherit;
389 }
390
391 .os-term-canvas__editor-name:focus,
392 .os-term-canvas__editor-desc:focus {
393 outline: none;
394 border-color: var( --wp-admin-theme-color, #2271b1 );
395 box-shadow: 0 0 0 2px
396 color-mix(
397 in srgb,
398 var( --wp-admin-theme-color, #2271b1 ) 25%,
399 transparent
400 );
401 }
402
403 .os-term-canvas__editor-desc {
404 appearance: none;
405 font: inherit;
406 font-size: 12px;
407 padding: 6px 8px;
408 border: 1px solid var( --os-ui-border, #c3c4c7 );
409 border-radius: 6px;
410 background: var( --os-ui-surface, #fff );
411 color: inherit;
412 resize: vertical;
413 min-height: 46px;
414 }
415
416 .os-term-canvas__editor-actions {
417 display: flex;
418 gap: 6px;
419 flex-wrap: wrap;
420 }
421
422 .os-term-canvas__editor-actions .os-term-canvas__btn {
423 flex: 1 1 auto;
424 justify-content: center;
425 }
426
427 .os-term-canvas__empty {
428 position: absolute;
429 inset: 0;
430 display: flex;
431 align-items: center;
432 justify-content: center;
433 pointer-events: none;
434 color: var( --os-ui-fg-muted, #50575e );
435 font-size: 13px;
436 font-style: italic;
437 text-align: center;
438 padding: 0 24px;
439 }
440
441 /*
442 * The canvas keeps a 320px editor beside the stage on a desk. A phone
443 * has no beside: the editor folds UNDER the stage as a sheet — at
444 * most half the height, its own scroll, clearing the home indicator —
445 * and only while a term is focused; while it would only say "select
446 * a term" it is not there, and the stage has the whole screen. The
447 * same fold under a narrow container, for a desk window pulled in.
448 */
449 html[data-os-mode="mobile"] .os-term-canvas__layout {
450 flex-direction: column;
451 }
452 html[data-os-mode="mobile"] .os-term-canvas__sidebar {
453 flex: 0 0 auto;
454 max-block-size: 50%;
455 border-inline-start: 0;
456 border-block-start: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
457 padding: 12px 16px calc( 12px + env( safe-area-inset-bottom, 0px ) );
458 box-shadow: 0 -6px 18px rgba( 0, 0, 0, 0.06 );
459 }
460 html[data-os-mode="mobile"] .os-term-canvas__sidebar:has( > .os-term-canvas__sidebar-empty ) {
461 display: none;
462 }
463 @container ( max-width: 640px ) {
464 .os-term-canvas__layout {
465 flex-direction: column;
466 }
467 .os-term-canvas__sidebar {
468 flex: 0 0 auto;
469 max-block-size: 50%;
470 border-inline-start: 0;
471 border-block-start: 1px solid var( --os-ui-border, rgba( 0, 0, 0, 0.08 ) );
472 }
473 .os-term-canvas__sidebar:has( > .os-term-canvas__sidebar-empty ) {
474 display: none;
475 }
476 }
477