@open-press/core 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/engine/cli.mjs +1 -1
  2. package/engine/commands/_shared.mjs +10 -5
  3. package/engine/commands/deploy.mjs +19 -4
  4. package/engine/output/static-server.mjs +16 -9
  5. package/package.json +1 -1
  6. package/src/openpress/app/OpenPressApp.tsx +4 -1
  7. package/src/openpress/app/OpenPressRuntime.tsx +26 -1
  8. package/src/openpress/reader/PageThumbnailsPanel.tsx +28 -5
  9. package/src/openpress/reader/SlidePresentationPage.tsx +36 -19
  10. package/src/openpress/reader/SlidePublicPage.tsx +332 -0
  11. package/src/openpress/reader/index.ts +1 -0
  12. package/src/openpress/reader/pageViewportScaleModel.ts +5 -3
  13. package/src/openpress/reader/usePageViewportScale.ts +9 -5
  14. package/src/openpress/workbench/Workbench.tsx +46 -164
  15. package/src/openpress/workbench/actions/DeploymentControl.tsx +1 -1
  16. package/src/openpress/workbench/actions/ExportControl.tsx +267 -0
  17. package/src/openpress/workbench/actions/index.ts +1 -1
  18. package/src/openpress/workbench/actions/useDeploymentWorkbench.ts +7 -2
  19. package/src/openpress/workbench/hooks/useWorkbenchNavigation.ts +42 -0
  20. package/src/openpress/workbench/project/ProjectEntryPanel.tsx +2 -278
  21. package/src/openpress/workbench/shell/WorkbenchToolbarActions.tsx +206 -0
  22. package/src/styles/openpress/app-shell.css +0 -83
  23. package/src/styles/openpress/print-route.css +1 -3
  24. package/src/styles/openpress/project-preview-panel.css +5 -783
  25. package/src/styles/openpress/public-viewer.css +7 -249
  26. package/src/styles/openpress/reader-runtime.css +0 -274
  27. package/src/styles/openpress/slide-presenter.css +150 -0
  28. package/src/styles/openpress/slide-public-viewer.css +222 -0
  29. package/src/styles/openpress/workbench-dialog.css +267 -0
  30. package/src/styles/openpress/workbench-export.css +154 -0
  31. package/src/styles/openpress/workbench-inline-editor.css +128 -0
  32. package/src/styles/openpress/workbench-panels.css +0 -88
  33. package/src/styles/openpress/workbench-search.css +257 -0
  34. package/src/styles/openpress/workbench-toolbar.css +422 -0
  35. package/src/styles/openpress/workbench.css +34 -1263
  36. package/src/styles/openpress/workspace-gallery.css +0 -5
  37. package/src/styles/openpress.css +7 -1
  38. package/vite.config.ts +16 -9
  39. package/src/openpress/workbench/actions/ExportImageControl.tsx +0 -96
  40. package/src/styles/openpress/media-workspace.css +0 -230
@@ -1,27 +1,46 @@
1
+ :where(
2
+ .openpress-workbench,
3
+ .openpress-public-viewer,
4
+ .openpress-slide-presenter,
5
+ .openpress-slide-public,
6
+ .openpress-workbench-dialog-backdrop
7
+ ) {
8
+ --openpress-workbench-bg: #141414;
9
+ --openpress-workbench-panel-bg: #171717;
10
+ --openpress-workbench-dialog-bg: #151716;
11
+ --openpress-workbench-surface: rgb(18 18 18 / 96%);
12
+ --openpress-workbench-surface-muted: rgb(255 255 255 / 4%);
13
+ --openpress-workbench-border: rgb(255 255 255 / 12%);
14
+ --openpress-workbench-border-muted: rgb(255 255 255 / 8%);
15
+ --openpress-workbench-text: rgb(242 242 238 / 94%);
16
+ --openpress-workbench-text-soft: rgb(226 229 230 / 86%);
17
+ --openpress-workbench-muted: rgb(160 166 173 / 70%);
18
+ --openpress-workbench-accent: rgb(240 182 76 / 92%);
19
+ --openpress-workbench-success: rgb(110 231 160 / 90%);
20
+ --openpress-workbench-danger: rgb(248 113 113 / 90%);
21
+ --openpress-workbench-radius-sm: 4px;
22
+ --openpress-workbench-radius-md: 6px;
23
+ --openpress-workbench-radius-pill: 999px;
24
+ --openpress-workbench-glass-bg: rgb(18 18 18 / 74%);
25
+ --openpress-workbench-glass-border: rgb(255 255 255 / 10%);
26
+ --openpress-workbench-glass-shadow: 0 18px 44px rgb(0 0 0 / 28%);
27
+ --openpress-workbench-glass-blur: blur(18px);
28
+ }
29
+
1
30
  .openpress-workbench {
2
31
  display: block;
3
32
  min-height: 100vh;
4
- background: #141414;
33
+ background: var(--openpress-workbench-bg);
5
34
  color: var(--openpress-text);
6
35
  }
7
36
 
8
- .openpress-public-shell {
9
- position: fixed;
10
- inset: 0;
11
- width: 100%;
12
- height: 100dvh;
13
- min-height: 100dvh;
14
- overflow: hidden;
15
- overscroll-behavior: none;
16
- }
17
-
18
37
  .openpress-workbench__stage {
19
38
  grid-area: main;
20
39
  min-width: 0;
21
40
  container-type: inline-size;
22
41
  padding: 0;
23
42
  overflow: hidden;
24
- background: #141414;
43
+ background: var(--openpress-workbench-bg);
25
44
  scrollbar-width: none;
26
45
  }
27
46
 
@@ -31,141 +50,6 @@
31
50
  display: none;
32
51
  }
33
52
 
34
- .openpress-slide-presenter {
35
- position: fixed;
36
- inset: 0;
37
- display: grid;
38
- width: 100%;
39
- height: 100dvh;
40
- min-height: 100dvh;
41
- overflow: hidden;
42
- background:
43
- radial-gradient(circle at 50% 0, rgb(255 255 255 / 8%), transparent 42%),
44
- #070707;
45
- color: rgb(245 245 242 / 92%);
46
- overscroll-behavior: none;
47
- }
48
-
49
- .openpress-slide-presenter__stage {
50
- position: relative;
51
- min-width: 0;
52
- min-height: 0;
53
- overflow: hidden;
54
- cursor: pointer;
55
- }
56
-
57
- .openpress-reader-app.openpress-slide-presenter .reader-stage {
58
- width: 100%;
59
- height: 100%;
60
- min-height: 0;
61
- overflow: hidden;
62
- background: transparent;
63
- overscroll-behavior: contain;
64
- scroll-snap-type: none;
65
- scrollbar-width: none;
66
- }
67
-
68
- .openpress-reader-app.openpress-slide-presenter .reader-stage::-webkit-scrollbar {
69
- width: 0;
70
- height: 0;
71
- display: none;
72
- }
73
-
74
- .openpress-reader-app.openpress-slide-presenter .reader-pages {
75
- --openpress-page-gap: 0;
76
- width: 100%;
77
- height: 100%;
78
- min-height: 100%;
79
- align-content: center;
80
- padding: 0;
81
- align-items: center;
82
- justify-items: center;
83
- }
84
-
85
- .openpress-reader-app.openpress-slide-presenter .openpress-html-page {
86
- min-height: 0;
87
- scroll-margin-top: 0;
88
- scroll-snap-align: center;
89
- }
90
-
91
- .openpress-reader-app.openpress-slide-presenter .openpress-html-page__html {
92
- box-shadow:
93
- 0 28px 80px rgb(0 0 0 / 34%),
94
- 0 0 0 1px rgb(255 255 255 / 10%);
95
- }
96
-
97
- .openpress-slide-presenter__hud {
98
- position: fixed;
99
- right: 18px;
100
- bottom: 18px;
101
- z-index: 40;
102
- display: flex;
103
- align-items: center;
104
- gap: 8px;
105
- border: 1px solid rgb(255 255 255 / 10%);
106
- border-radius: 999px;
107
- padding: 6px;
108
- background: rgb(18 18 18 / 74%);
109
- box-shadow: 0 18px 44px rgb(0 0 0 / 28%);
110
- backdrop-filter: blur(18px);
111
- opacity: 1;
112
- transform: translateY(0);
113
- transition:
114
- opacity 160ms ease,
115
- transform 160ms ease;
116
- }
117
-
118
- .openpress-slide-presenter[data-openpress-present-ui="immersive"] {
119
- cursor: none;
120
- }
121
-
122
- .openpress-slide-presenter[data-openpress-present-ui="immersive"] .openpress-slide-presenter__stage {
123
- cursor: none;
124
- }
125
-
126
- .openpress-slide-presenter[data-openpress-present-ui="immersive"] .openpress-slide-presenter__hud {
127
- opacity: 0;
128
- pointer-events: none;
129
- transform: translateY(8px);
130
- }
131
-
132
- .openpress-slide-presenter__progress {
133
- min-width: 64px;
134
- padding: 0 10px;
135
- color: rgb(245 245 242 / 72%);
136
- font-family: var(--openpress-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
137
- font-size: 12px;
138
- font-weight: 600;
139
- letter-spacing: 0.08em;
140
- line-height: 30px;
141
- text-align: center;
142
- }
143
-
144
- .openpress-slide-presenter__button {
145
- display: inline-flex;
146
- width: 30px;
147
- height: 30px;
148
- align-items: center;
149
- justify-content: center;
150
- border: 0;
151
- border-radius: 999px;
152
- padding: 0;
153
- background: transparent;
154
- color: rgb(245 245 242 / 68%);
155
- cursor: pointer;
156
- }
157
-
158
- .openpress-slide-presenter__button:hover,
159
- .openpress-slide-presenter__button:focus-visible {
160
- background: rgb(255 255 255 / 10%);
161
- color: rgb(245 245 242 / 96%);
162
- }
163
-
164
- .openpress-slide-presenter__button svg {
165
- width: 15px;
166
- height: 15px;
167
- }
168
-
169
53
  .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app,
170
54
  .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-left,
171
55
  .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-right,
@@ -197,1119 +81,6 @@
197
81
  grid-template-columns: 0 minmax(0, 1fr) 0;
198
82
  }
199
83
 
200
- .openpress-workbench-toolbar {
201
- z-index: 30;
202
- display: flex;
203
- min-width: 0;
204
- height: var(--openpress-workbench-toolbar-height, 44px);
205
- min-height: 0;
206
- grid-area: toolbar;
207
- align-items: center;
208
- justify-content: space-between;
209
- gap: 12px;
210
- border-bottom: 1px solid rgb(255 255 255 / 9%);
211
- padding: 0 12px;
212
- background: rgb(18 18 18 / 96%);
213
- backdrop-filter: blur(18px);
214
- }
215
-
216
- .openpress-workbench-toolbar__content {
217
- display: flex;
218
- flex: 1 1 auto;
219
- min-width: 0;
220
- align-items: center;
221
- justify-content: space-between;
222
- gap: 12px;
223
- }
224
-
225
- .openpress-workbench-toolbar__group {
226
- display: flex;
227
- min-width: 0;
228
- align-items: center;
229
- gap: 8px;
230
- }
231
-
232
- .openpress-workbench-toolbar__group--right {
233
- justify-content: flex-end;
234
- }
235
-
236
- .openpress-workbench-toolbar__group--page {
237
- flex: 1 1 auto;
238
- justify-content: center;
239
- }
240
-
241
- .openpress-workbench-toolbar-panel-toggle {
242
- display: inline-flex;
243
- width: 30px;
244
- height: 30px;
245
- flex: 0 0 auto;
246
- align-items: center;
247
- justify-content: center;
248
- border: 1px solid transparent;
249
- border-radius: 4px;
250
- padding: 0;
251
- background: transparent;
252
- color: #8e949b;
253
- cursor: pointer;
254
- transition:
255
- color 160ms ease,
256
- transform 160ms ease;
257
- }
258
-
259
- .openpress-workbench-toolbar-panel-toggle:hover {
260
- color: #f2f2f0;
261
- }
262
-
263
- .openpress-workbench-toolbar-panel-toggle:active {
264
- transform: translateY(1px);
265
- }
266
-
267
- .openpress-workbench-toolbar-panel-toggle svg {
268
- width: 14px;
269
- height: 14px;
270
- }
271
-
272
- .openpress-workbench-page-geometry,
273
- .openpress-workbench-zoom-control {
274
- display: inline-flex;
275
- overflow: hidden;
276
- height: 30px;
277
- max-width: min(34vw, 280px);
278
- align-items: center;
279
- justify-content: center;
280
- gap: 7px;
281
- border: 1px solid transparent;
282
- border-radius: 4px;
283
- padding: 0 8px;
284
- background: transparent;
285
- color: #aeb3b8;
286
- font: inherit;
287
- line-height: 1;
288
- white-space: nowrap;
289
- cursor: pointer;
290
- transition:
291
- border-color 160ms ease,
292
- background 160ms ease,
293
- color 160ms ease,
294
- transform 160ms ease;
295
- }
296
-
297
- .openpress-workbench-page-geometry:hover,
298
- .openpress-workbench-zoom-control:hover {
299
- color: #f2f2f0;
300
- }
301
-
302
- .openpress-workbench-page-geometry:active,
303
- .openpress-workbench-zoom-control:active {
304
- transform: translateY(1px);
305
- }
306
-
307
- .openpress-workbench-page-geometry svg,
308
- .openpress-workbench-zoom-control svg {
309
- width: 13px;
310
- height: 13px;
311
- flex: 0 0 auto;
312
- color: currentColor;
313
- }
314
-
315
- .openpress-workbench-page-geometry__label,
316
- .openpress-workbench-page-geometry__dimensions {
317
- overflow: hidden;
318
- min-width: 0;
319
- text-overflow: ellipsis;
320
- white-space: nowrap;
321
- }
322
-
323
- .openpress-workbench-page-geometry__label {
324
- color: #d8dadd;
325
- font-size: 11px;
326
- font-weight: 560;
327
- }
328
-
329
- .openpress-workbench-page-geometry__dimensions {
330
- color: #7f858c;
331
- font-family: var(--openpress-font-mono);
332
- font-size: 10px;
333
- font-weight: 500;
334
- }
335
-
336
- .openpress-workbench-zoom-control {
337
- max-width: min(20vw, 92px);
338
- color: #9fa5ab;
339
- font-family: var(--openpress-font-mono);
340
- font-size: 10px;
341
- font-weight: 650;
342
- }
343
-
344
- .openpress-workbench-zoom-control-wrap {
345
- position: relative;
346
- display: inline-flex;
347
- }
348
-
349
- .openpress-workbench-zoom-control__chevron {
350
- width: 12px !important;
351
- height: 12px !important;
352
- opacity: 0.7;
353
- }
354
-
355
- .openpress-workbench-zoom-control[aria-expanded="true"],
356
- .openpress-workbench-zoom-control[data-openpress-toolbar-active="true"] {
357
- border-color: rgb(242 242 240 / 16%);
358
- background: rgb(242 242 240 / 7%);
359
- color: #f2f2f0;
360
- }
361
-
362
- .openpress-workbench-zoom-menu {
363
- position: absolute;
364
- top: calc(100% + 8px);
365
- left: 50%;
366
- z-index: 80;
367
- display: grid;
368
- width: 188px;
369
- gap: 6px;
370
- border: 1px solid rgb(255 255 255 / 16%);
371
- border-radius: 10px;
372
- padding: 8px;
373
- background: rgb(46 47 46 / 96%);
374
- box-shadow: 0 18px 42px rgb(0 0 0 / 34%);
375
- color: rgb(245 245 242 / 88%);
376
- transform: translateX(-50%);
377
- backdrop-filter: blur(18px);
378
- }
379
-
380
- .openpress-workbench-zoom-menu__section {
381
- display: grid;
382
- gap: 2px;
383
- }
384
-
385
- .openpress-workbench-zoom-menu__divider {
386
- height: 1px;
387
- margin: 4px 6px;
388
- background: rgb(255 255 255 / 14%);
389
- }
390
-
391
- .openpress-workbench-zoom-menu__item {
392
- display: grid;
393
- grid-template-columns: 18px 18px minmax(0, 1fr);
394
- min-height: 30px;
395
- align-items: center;
396
- gap: 9px;
397
- border: 0;
398
- border-radius: 6px;
399
- padding: 0 8px;
400
- background: transparent;
401
- color: inherit;
402
- font: inherit;
403
- font-size: 12px;
404
- font-weight: 650;
405
- line-height: 1;
406
- text-align: left;
407
- cursor: pointer;
408
- }
409
-
410
- .openpress-workbench-zoom-menu__item:hover,
411
- .openpress-workbench-zoom-menu__item:focus-visible {
412
- background: rgb(255 255 255 / 9%);
413
- outline: 0;
414
- }
415
-
416
- .openpress-workbench-zoom-menu__item[aria-checked="true"] {
417
- color: #ffffff;
418
- }
419
-
420
- .openpress-workbench-zoom-menu__item svg {
421
- width: 15px;
422
- height: 15px;
423
- }
424
-
425
- .openpress-workbench-zoom-menu__check {
426
- display: grid;
427
- width: 18px;
428
- height: 18px;
429
- place-items: center;
430
- }
431
-
432
- .openpress-workbench-zoom-menu__spacer {
433
- width: 18px;
434
- height: 1px;
435
- }
436
-
437
- .openpress-workbench-toolbar-action {
438
- position: relative;
439
- display: inline-flex;
440
- overflow: hidden;
441
- height: 30px;
442
- width: 30px;
443
- min-width: 30px;
444
- max-width: 30px;
445
- align-items: center;
446
- justify-content: center;
447
- gap: 0;
448
- border: 1px solid transparent;
449
- border-radius: 4px;
450
- padding: 0;
451
- background: transparent;
452
- color: #aeb3b8;
453
- font: inherit;
454
- font-size: 11px;
455
- font-weight: 500;
456
- line-height: 1;
457
- text-decoration: none;
458
- white-space: nowrap;
459
- cursor: pointer;
460
- transition:
461
- border-color 160ms ease,
462
- background 160ms ease,
463
- color 160ms ease,
464
- transform 160ms ease;
465
- }
466
-
467
- .openpress-workbench-toolbar-action:hover:not(:disabled) {
468
- color: #f2f2f0;
469
- }
470
-
471
- .openpress-workbench-toolbar-action:active:not(:disabled) {
472
- transform: translateY(1px);
473
- }
474
-
475
- .openpress-workbench-toolbar-action:disabled {
476
- cursor: progress;
477
- color: #a7adb2;
478
- opacity: 0.62;
479
- }
480
-
481
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] {
482
- width: auto;
483
- min-width: 30px;
484
- max-width: min(34vw, 300px);
485
- gap: 7px;
486
- padding: 0 10px;
487
- }
488
-
489
- .openpress-workbench-toolbar-action[data-openpress-toolbar-active="true"] {
490
- border-color: rgb(240 182 76 / 34%);
491
- background: rgb(240 182 76 / 8%);
492
- color: rgb(240 182 76 / 92%);
493
- }
494
-
495
- .openpress-workbench-toolbar-action[data-openpress-deploy-status="online"] {
496
- color: rgb(110 231 160 / 88%);
497
- }
498
-
499
- .openpress-workbench-toolbar-action[data-openpress-deploy-status="dirty"],
500
- .openpress-workbench-toolbar-action[data-openpress-deploy-status="deploying"] {
501
- color: rgb(240 182 76 / 92%);
502
- }
503
-
504
- .openpress-workbench-toolbar-action[data-openpress-deploy-status="failed"] {
505
- color: rgb(248 113 113 / 90%);
506
- }
507
-
508
- .openpress-workbench-toolbar-action[data-deploy-status="deploying"]::after {
509
- position: absolute;
510
- inset: 3px;
511
- border: 1px solid rgb(240 182 76 / 36%);
512
- border-top-color: rgb(240 182 76 / 96%);
513
- border-radius: 999px;
514
- animation: openpress-toolbar-deploy-spin 0.9s linear infinite;
515
- content: "";
516
- }
517
-
518
- .openpress-workbench-toolbar-action[data-deploy-status="deploying"] svg {
519
- animation: openpress-toolbar-deploy-pulse 0.9s ease-in-out infinite alternate;
520
- }
521
-
522
- .openpress-workbench-toolbar-action svg {
523
- width: 13px;
524
- height: 13px;
525
- flex: 0 0 auto;
526
- color: currentColor;
527
- }
528
-
529
- .openpress-workbench-toolbar-action__label,
530
- .openpress-workbench-toolbar-action .openpress-dev-pdf-status,
531
- .openpress-workbench-toolbar-action .openpress-dev-deploy-status,
532
- .openpress-workbench-toolbar-action .openpress-dev-edit-status,
533
- .openpress-workbench-toolbar-action .openpress-dev-inspector-status {
534
- display: none;
535
- overflow: hidden;
536
- min-width: 0;
537
- text-overflow: ellipsis;
538
- white-space: nowrap;
539
- }
540
-
541
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] .openpress-workbench-toolbar-action__label,
542
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] .openpress-dev-pdf-status,
543
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] .openpress-dev-deploy-status,
544
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] .openpress-dev-edit-status,
545
- .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] .openpress-dev-inspector-status {
546
- display: inline-flex;
547
- }
548
-
549
- .openpress-workbench-toolbar-action .openpress-dev-pdf-status,
550
- .openpress-workbench-toolbar-action .openpress-dev-deploy-status,
551
- .openpress-workbench-toolbar-action .openpress-dev-edit-status,
552
- .openpress-workbench-toolbar-action .openpress-dev-inspector-status {
553
- max-width: 150px;
554
- font-size: 10px;
555
- }
556
-
557
- .openpress-dev-edit-status {
558
- align-items: center;
559
- gap: 5px;
560
- }
561
-
562
- .openpress-dev-edit-status--toolbar {
563
- display: inline-flex;
564
- max-width: 132px;
565
- min-height: 24px;
566
- align-items: center;
567
- gap: 6px;
568
- overflow: hidden;
569
- border: 1px solid rgb(240 182 76 / 18%);
570
- border-radius: 4px;
571
- padding: 0 8px;
572
- background: rgb(240 182 76 / 7%);
573
- color: rgb(240 182 76 / 88%);
574
- font-size: 10px;
575
- line-height: 1;
576
- text-overflow: ellipsis;
577
- white-space: nowrap;
578
- }
579
-
580
- .openpress-dev-edit-status[data-openpress-edit-status="failed"] {
581
- color: rgb(248 113 113 / 92%);
582
- }
583
-
584
- .openpress-dev-edit-status__spinner {
585
- width: 9px;
586
- height: 9px;
587
- flex: 0 0 auto;
588
- border: 1px solid rgb(240 182 76 / 32%);
589
- border-top-color: rgb(240 182 76 / 96%);
590
- border-radius: 999px;
591
- animation: openpress-toolbar-deploy-spin 0.8s linear infinite;
592
- }
593
-
594
- .openpress-workbench-toolbar > .openpress-dev-inspector-status {
595
- max-width: 180px;
596
- flex: 0 1 auto;
597
- color: rgb(198 204 210 / 70%);
598
- font-size: 10px;
599
- }
600
-
601
- .openpress-dev-deploy-status--toolbar {
602
- max-width: 86px;
603
- overflow: hidden;
604
- color: rgb(240 182 76 / 86%);
605
- text-overflow: ellipsis;
606
- }
607
-
608
- .openpress-inline-source-editor-layer {
609
- position: fixed;
610
- inset: 0;
611
- z-index: 980;
612
- pointer-events: none;
613
- }
614
-
615
- .openpress-inline-source-editor {
616
- position: fixed;
617
- display: grid;
618
- gap: 10px;
619
- max-width: calc(100vw - 28px);
620
- border: 1px solid rgb(255 255 255 / 12%);
621
- border-radius: 6px;
622
- padding: 12px;
623
- background: #151716;
624
- color: rgb(242 242 238 / 94%);
625
- box-shadow: 0 18px 46px rgb(0 0 0 / 34%);
626
- pointer-events: auto;
627
- }
628
-
629
- .openpress-inline-source-editor__header,
630
- .openpress-inline-source-editor__footer {
631
- display: flex;
632
- align-items: center;
633
- justify-content: space-between;
634
- gap: 10px;
635
- min-width: 0;
636
- }
637
-
638
- .openpress-inline-source-editor__header > div {
639
- display: grid;
640
- gap: 4px;
641
- min-width: 0;
642
- }
643
-
644
- .openpress-inline-source-editor__header strong {
645
- overflow: hidden;
646
- font-size: 12px;
647
- font-weight: 650;
648
- line-height: 1.1;
649
- text-overflow: ellipsis;
650
- white-space: nowrap;
651
- }
652
-
653
- .openpress-inline-source-editor__eyebrow {
654
- color: rgb(174 179 184 / 58%);
655
- font-family: var(--openpress-font-mono);
656
- font-size: 9px;
657
- font-weight: 700;
658
- letter-spacing: 0.08em;
659
- }
660
-
661
- .openpress-inline-source-editor__header button,
662
- .openpress-inline-source-editor__footer button {
663
- min-height: 28px;
664
- border: 1px solid rgb(255 255 255 / 12%);
665
- border-radius: 4px;
666
- background: transparent;
667
- color: rgb(242 242 238 / 82%);
668
- font: inherit;
669
- font-size: 11px;
670
- cursor: pointer;
671
- }
672
-
673
- .openpress-inline-source-editor__header button {
674
- width: 28px;
675
- padding: 0;
676
- font-size: 15px;
677
- }
678
-
679
- .openpress-inline-source-editor__footer button {
680
- padding: 0 10px;
681
- }
682
-
683
- .openpress-inline-source-editor__footer button:last-child {
684
- border-color: rgb(240 182 76 / 28%);
685
- background: rgb(240 182 76 / 9%);
686
- color: rgb(240 182 76 / 92%);
687
- }
688
-
689
- .openpress-inline-source-editor__footer button:disabled {
690
- cursor: progress;
691
- opacity: 0.54;
692
- }
693
-
694
- .openpress-inline-source-editor textarea {
695
- width: 100%;
696
- min-height: 126px;
697
- resize: vertical;
698
- border: 1px solid rgb(255 255 255 / 12%);
699
- border-radius: 4px;
700
- padding: 10px;
701
- background: rgb(0 0 0 / 24%);
702
- color: rgb(242 242 238 / 92%);
703
- font-family: var(--openpress-font-mono);
704
- font-size: 11px;
705
- line-height: 1.55;
706
- outline: none;
707
- }
708
-
709
- .openpress-inline-source-editor textarea:focus {
710
- border-color: rgb(240 182 76 / 42%);
711
- box-shadow: 0 0 0 1px rgb(240 182 76 / 16%);
712
- }
713
-
714
- .openpress-inline-source-editor__footer > span {
715
- min-width: 0;
716
- overflow: hidden;
717
- color: rgb(174 179 184 / 70%);
718
- font-size: 10px;
719
- text-overflow: ellipsis;
720
- white-space: nowrap;
721
- }
722
-
723
- .openpress-inline-source-editor__footer > span[data-openpress-source-editor-status="saving"] {
724
- color: rgb(240 182 76 / 88%);
725
- }
726
-
727
- .openpress-inline-source-editor__footer > span[data-openpress-source-editor-status="failed"] {
728
- color: rgb(248 113 113 / 90%);
729
- }
730
-
731
- .openpress-inline-source-editor__footer > div {
732
- display: inline-flex;
733
- gap: 6px;
734
- flex: 0 0 auto;
735
- }
736
-
737
- .openpress-workbench-dialog-backdrop {
738
- position: fixed;
739
- inset: 0;
740
- z-index: 1000;
741
- display: grid;
742
- place-items: start center;
743
- overflow: auto;
744
- padding: calc(var(--openpress-workbench-toolbar-height, 44px) + 28px) 28px 28px;
745
- background: rgb(0 0 0 / 54%);
746
- }
747
-
748
- .openpress-workbench-dialog {
749
- position: relative;
750
- display: grid;
751
- grid-template-rows: auto minmax(0, 1fr) auto;
752
- width: min(560px, calc(100vw - 56px));
753
- max-height: calc(100vh - var(--openpress-workbench-toolbar-height, 44px) - 56px);
754
- overflow: hidden;
755
- border: 1px solid rgb(255 255 255 / 12%);
756
- border-radius: 6px;
757
- background: #151716;
758
- color: rgb(242 242 238 / 94%);
759
- box-shadow: 0 24px 68px rgb(0 0 0 / 42%);
760
- }
761
-
762
- /* The project preview surface needs more room for media thumbnails and
763
- rendered component previews than the deploy/search default. */
764
- .openpress-workbench-dialog.openpress-project-preview-dialog {
765
- width: min(860px, calc(100vw - 56px));
766
- }
767
-
768
- /* The project preview footer holds stacked action forms + a comment
769
- composer instead of a row of buttons. Override the default
770
- flex-row footer layout for this dialog only. */
771
- .openpress-workbench-dialog.openpress-project-preview-dialog .openpress-workbench-dialog__footer {
772
- display: grid;
773
- gap: 12px;
774
- justify-content: stretch;
775
- align-items: stretch;
776
- }
777
-
778
- .openpress-workbench-dialog::before {
779
- position: absolute;
780
- top: 0;
781
- right: 0;
782
- left: 0;
783
- height: 2px;
784
- background: rgb(240 182 76 / 82%);
785
- content: "";
786
- }
787
-
788
- .openpress-workbench-dialog__header,
789
- .openpress-workbench-dialog__footer {
790
- display: flex;
791
- align-items: center;
792
- justify-content: space-between;
793
- gap: 12px;
794
- }
795
-
796
- .openpress-workbench-dialog__header {
797
- align-items: flex-start;
798
- padding: 18px 48px 14px 24px;
799
- }
800
-
801
- .openpress-workbench-dialog__footer {
802
- padding: 14px 24px 18px;
803
- }
804
-
805
- .openpress-workbench-dialog__heading {
806
- display: grid;
807
- min-width: 0;
808
- gap: 5px;
809
- }
810
-
811
- .openpress-workbench-dialog__eyebrow {
812
- display: block;
813
- color: rgb(160 166 173 / 62%);
814
- font-family: var(--openpress-font-mono);
815
- font-size: 10px;
816
- font-weight: 650;
817
- line-height: 1;
818
- letter-spacing: 0;
819
- text-transform: uppercase;
820
- }
821
-
822
- .openpress-workbench-dialog__title-row {
823
- display: grid;
824
- min-width: 0;
825
- grid-template-columns: auto minmax(0, 1fr);
826
- align-items: center;
827
- column-gap: 8px;
828
- min-height: 20px;
829
- }
830
-
831
- .openpress-workbench-dialog h2 {
832
- margin: 0;
833
- color: rgb(242 242 240 / 94%);
834
- font-size: 15px;
835
- font-weight: 650;
836
- line-height: 20px;
837
- }
838
-
839
- .openpress-workbench-dialog h2::before,
840
- .openpress-workbench-dialog h3::before {
841
- display: none;
842
- content: none;
843
- }
844
-
845
- .openpress-workbench-dialog__title-meta {
846
- display: flex;
847
- min-width: 0;
848
- min-height: 20px;
849
- align-items: center;
850
- }
851
-
852
- .openpress-workbench-dialog__close {
853
- position: absolute;
854
- top: 9px;
855
- right: 9px;
856
- display: inline-flex;
857
- width: 30px;
858
- height: 30px;
859
- align-items: center;
860
- justify-content: center;
861
- border: 1px solid transparent;
862
- border-radius: 4px;
863
- padding: 0;
864
- background: transparent;
865
- color: #aeb3b8;
866
- cursor: pointer;
867
- }
868
-
869
- .openpress-workbench-dialog__close:hover {
870
- color: #f2f2f0;
871
- }
872
-
873
- .openpress-workbench-dialog__close svg {
874
- width: 14px;
875
- height: 14px;
876
- }
877
-
878
- .openpress-deploy-dialog {
879
- width: min(420px, calc(100vw - 56px));
880
- gap: 12px;
881
- padding: 16px;
882
- }
883
-
884
- .openpress-deploy-dialog__source {
885
- display: inline-flex;
886
- min-height: 19px;
887
- align-items: center;
888
- max-width: 100%;
889
- overflow: hidden;
890
- border: 1px solid rgb(110 231 160 / 18%);
891
- border-radius: 999px;
892
- padding: 0 7px;
893
- background: rgb(110 231 160 / 7%);
894
- color: rgb(144 238 177 / 88%);
895
- font-size: 10px;
896
- font-weight: 620;
897
- line-height: 1;
898
- text-overflow: ellipsis;
899
- white-space: nowrap;
900
- }
901
-
902
- .openpress-deploy-dialog dl {
903
- display: grid;
904
- gap: 8px;
905
- margin: 0;
906
- border-top: 1px solid rgb(255 255 255 / 8%);
907
- border-bottom: 1px solid rgb(255 255 255 / 8%);
908
- padding: 12px 0;
909
- }
910
-
911
- .openpress-deploy-dialog dl div {
912
- display: grid;
913
- min-width: 0;
914
- grid-template-columns: 78px minmax(0, 1fr);
915
- gap: 12px;
916
- align-items: center;
917
- }
918
-
919
- .openpress-deploy-dialog dt,
920
- .openpress-deploy-dialog dd {
921
- margin: 0;
922
- min-width: 0;
923
- font-size: 11px;
924
- line-height: 1.35;
925
- }
926
-
927
- .openpress-deploy-dialog dt {
928
- color: rgb(150 156 163 / 68%);
929
- }
930
-
931
- .openpress-deploy-dialog dd {
932
- overflow: hidden;
933
- color: rgb(226 229 230 / 86%);
934
- text-align: left;
935
- text-overflow: ellipsis;
936
- white-space: nowrap;
937
- }
938
-
939
- .openpress-deploy-dialog dd a {
940
- color: rgb(214 218 222 / 92%);
941
- text-decoration: none;
942
- }
943
-
944
- .openpress-deploy-dialog dd a:hover {
945
- color: rgb(240 182 76 / 94%);
946
- text-decoration: underline;
947
- text-underline-offset: 3px;
948
- }
949
-
950
- .openpress-deploy-dialog__status {
951
- display: inline-flex;
952
- align-items: center;
953
- justify-content: flex-start;
954
- gap: 6px;
955
- color: rgb(198 204 210 / 78%);
956
- }
957
-
958
- .openpress-deploy-dialog__status::before {
959
- width: 6px;
960
- height: 6px;
961
- flex: 0 0 auto;
962
- border-radius: 999px;
963
- background: currentColor;
964
- content: "";
965
- }
966
-
967
- .openpress-deploy-dialog__status[data-openpress-deploy-status="online"] {
968
- color: rgb(110 231 160 / 90%);
969
- }
970
-
971
- .openpress-deploy-dialog__status[data-openpress-deploy-status="dirty"],
972
- .openpress-deploy-dialog__status[data-openpress-deploy-status="deploying"] {
973
- color: rgb(240 182 76 / 92%);
974
- }
975
-
976
- .openpress-deploy-dialog__status[data-openpress-deploy-status="failed"] {
977
- color: rgb(248 113 113 / 90%);
978
- }
979
-
980
- .openpress-deploy-dialog__message {
981
- margin: 0;
982
- border-left: 2px solid rgb(248 113 113 / 76%);
983
- padding: 6px 0 6px 10px;
984
- color: rgb(248 113 113 / 88%);
985
- font-size: 12px;
986
- line-height: 1.45;
987
- }
988
-
989
- .openpress-deploy-dialog .openpress-workbench-dialog__footer button {
990
- display: inline-flex;
991
- height: 30px;
992
- align-items: center;
993
- justify-content: center;
994
- gap: 7px;
995
- border: 1px solid rgb(255 255 255 / 12%);
996
- border-radius: 4px;
997
- padding: 0 10px;
998
- background: transparent;
999
- color: rgb(226 229 230 / 86%);
1000
- font: inherit;
1001
- font-size: 11px;
1002
- font-weight: 560;
1003
- cursor: pointer;
1004
- }
1005
-
1006
- .openpress-deploy-dialog .openpress-workbench-dialog__footer button:hover:not(:disabled) {
1007
- border-color: rgb(240 182 76 / 34%);
1008
- color: rgb(240 182 76 / 92%);
1009
- }
1010
-
1011
- .openpress-deploy-dialog .openpress-workbench-dialog__footer button:disabled {
1012
- cursor: not-allowed;
1013
- opacity: 0.46;
1014
- }
1015
-
1016
- .openpress-deploy-dialog .openpress-workbench-dialog__footer svg {
1017
- width: 13px;
1018
- height: 13px;
1019
- }
1020
-
1021
- .openpress-search-dialog-backdrop {
1022
- z-index: 1001;
1023
- padding: calc(var(--openpress-workbench-toolbar-height, 44px) + 24px) 24px 24px;
1024
- background: rgb(0 0 0 / 46%);
1025
- }
1026
-
1027
- .openpress-search-dialog {
1028
- width: min(640px, calc(100vw - 48px));
1029
- max-height: min(72vh, 760px);
1030
- grid-template-rows: auto auto minmax(0, 1fr);
1031
- box-shadow: 0 24px 72px rgb(0 0 0 / 44%);
1032
- }
1033
-
1034
- .openpress-search-dialog__header {
1035
- gap: 16px;
1036
- padding: 16px 48px 10px 16px;
1037
- }
1038
-
1039
- .openpress-search-dialog__form {
1040
- display: grid;
1041
- gap: 10px;
1042
- border-top: 1px solid rgb(255 255 255 / 8%);
1043
- border-bottom: 1px solid rgb(255 255 255 / 8%);
1044
- padding: 12px 16px;
1045
- }
1046
-
1047
- .openpress-search-dialog__input-row {
1048
- display: grid;
1049
- grid-template-columns: 16px minmax(0, 1fr) auto;
1050
- gap: 8px;
1051
- align-items: center;
1052
- min-height: 34px;
1053
- border: 1px solid rgb(255 255 255 / 12%);
1054
- border-radius: 5px;
1055
- padding: 0 7px 0 10px;
1056
- background: rgb(255 255 255 / 4%);
1057
- }
1058
-
1059
- .openpress-search-dialog__input-row > svg {
1060
- width: 13px;
1061
- height: 13px;
1062
- color: rgb(160 166 173 / 70%);
1063
- }
1064
-
1065
- .openpress-search-dialog__input-row input {
1066
- min-width: 0;
1067
- border: 0;
1068
- padding: 0;
1069
- background: transparent;
1070
- color: rgb(242 242 238 / 94%);
1071
- font: inherit;
1072
- font-size: 12px;
1073
- outline: 0;
1074
- }
1075
-
1076
- .openpress-search-dialog__input-row input::placeholder {
1077
- color: rgb(160 166 173 / 54%);
1078
- }
1079
-
1080
- .openpress-search-dialog__input-row button,
1081
- .openpress-search-dialog__scope button {
1082
- display: inline-flex;
1083
- height: 26px;
1084
- align-items: center;
1085
- justify-content: center;
1086
- gap: 6px;
1087
- border: 1px solid transparent;
1088
- border-radius: 4px;
1089
- padding: 0 9px;
1090
- background: transparent;
1091
- color: rgb(214 218 222 / 82%);
1092
- font: inherit;
1093
- font-size: 11px;
1094
- font-weight: 560;
1095
- cursor: pointer;
1096
- }
1097
-
1098
- .openpress-search-dialog__input-row button:hover:not(:disabled),
1099
- .openpress-search-dialog__scope button:hover {
1100
- color: rgb(240 182 76 / 92%);
1101
- }
1102
-
1103
- .openpress-search-dialog__input-row button:disabled {
1104
- cursor: progress;
1105
- opacity: 0.62;
1106
- }
1107
-
1108
- .openpress-search-dialog__input-row button svg {
1109
- width: 12px;
1110
- height: 12px;
1111
- }
1112
-
1113
- .openpress-search-dialog__input-row button:disabled svg,
1114
- .openpress-search-dialog__empty svg {
1115
- animation: openpress-search-spin 0.9s linear infinite;
1116
- }
1117
-
1118
- .openpress-search-dialog__scope {
1119
- display: inline-flex;
1120
- width: fit-content;
1121
- align-items: center;
1122
- gap: 2px;
1123
- border: 1px solid rgb(255 255 255 / 10%);
1124
- border-radius: 5px;
1125
- padding: 2px;
1126
- background: rgb(255 255 255 / 3%);
1127
- }
1128
-
1129
- .openpress-search-dialog__scope button[data-openpress-search-scope-active="true"] {
1130
- border-color: rgb(240 182 76 / 26%);
1131
- background: rgb(240 182 76 / 9%);
1132
- color: rgb(240 182 76 / 92%);
1133
- }
1134
-
1135
- .openpress-search-dialog__empty,
1136
- .openpress-search-dialog__error {
1137
- display: flex;
1138
- align-items: center;
1139
- gap: 8px;
1140
- margin: 0;
1141
- padding: 18px 16px;
1142
- color: rgb(160 166 173 / 72%);
1143
- font-size: 12px;
1144
- line-height: 1.5;
1145
- }
1146
-
1147
- .openpress-search-dialog__empty svg {
1148
- width: 13px;
1149
- height: 13px;
1150
- }
1151
-
1152
- .openpress-search-dialog__error {
1153
- color: rgb(248 113 113 / 88%);
1154
- }
1155
-
1156
- .openpress-search-dialog__results {
1157
- min-height: 0;
1158
- overflow: auto;
1159
- padding: 12px 16px 16px;
1160
- }
1161
-
1162
- .openpress-search-dialog__summary {
1163
- margin: 0 0 10px;
1164
- color: rgb(160 166 173 / 70%);
1165
- font-size: 11px;
1166
- line-height: 1.35;
1167
- }
1168
-
1169
- .openpress-search-dialog__file {
1170
- display: grid;
1171
- gap: 7px;
1172
- margin: 0 0 12px;
1173
- padding-bottom: 12px;
1174
- border-bottom: 1px solid rgb(255 255 255 / 8%);
1175
- }
1176
-
1177
- .openpress-search-dialog__file:last-child {
1178
- margin-bottom: 0;
1179
- padding-bottom: 0;
1180
- border-bottom: 0;
1181
- }
1182
-
1183
- .openpress-search-dialog__file h3 {
1184
- display: grid;
1185
- min-width: 0;
1186
- grid-template-columns: 14px minmax(0, 1fr) auto;
1187
- gap: 7px;
1188
- align-items: center;
1189
- margin: 0;
1190
- color: rgb(226 229 230 / 90%);
1191
- font-size: 12px;
1192
- font-weight: 650;
1193
- line-height: 1.25;
1194
- }
1195
-
1196
- .openpress-search-dialog__file h3 svg {
1197
- width: 12px;
1198
- height: 12px;
1199
- color: rgb(240 182 76 / 82%);
1200
- }
1201
-
1202
- .openpress-search-dialog__file h3 span {
1203
- overflow: hidden;
1204
- min-width: 0;
1205
- text-overflow: ellipsis;
1206
- white-space: nowrap;
1207
- }
1208
-
1209
- .openpress-search-dialog__file h3 small {
1210
- display: inline-flex;
1211
- min-width: 20px;
1212
- height: 18px;
1213
- align-items: center;
1214
- justify-content: center;
1215
- border: 1px solid rgb(255 255 255 / 10%);
1216
- border-radius: 999px;
1217
- color: rgb(160 166 173 / 78%);
1218
- font-size: 10px;
1219
- font-weight: 650;
1220
- }
1221
-
1222
- .openpress-search-dialog__file ol {
1223
- display: grid;
1224
- gap: 5px;
1225
- margin: 0;
1226
- padding: 0;
1227
- list-style: none;
1228
- }
1229
-
1230
- .openpress-search-dialog__file li {
1231
- display: block;
1232
- min-width: 0;
1233
- }
1234
-
1235
- .openpress-search-dialog__result {
1236
- display: grid;
1237
- width: 100%;
1238
- min-width: 0;
1239
- grid-template-columns: 44px minmax(0, 1fr) auto;
1240
- gap: 10px;
1241
- align-items: baseline;
1242
- border-radius: 4px;
1243
- border: 1px solid transparent;
1244
- padding: 6px 7px;
1245
- background: rgb(255 255 255 / 3%);
1246
- color: inherit;
1247
- font: inherit;
1248
- text-align: left;
1249
- cursor: pointer;
1250
- }
1251
-
1252
- .openpress-search-dialog__result:hover:not(:disabled) {
1253
- border-color: rgb(240 182 76 / 18%);
1254
- background: rgb(240 182 76 / 7%);
1255
- }
1256
-
1257
- .openpress-search-dialog__result:disabled {
1258
- cursor: default;
1259
- opacity: 0.68;
1260
- }
1261
-
1262
- .openpress-search-dialog__line {
1263
- color: rgb(160 166 173 / 74%);
1264
- font-family: var(--openpress-font-mono);
1265
- font-size: 10px;
1266
- line-height: 1.35;
1267
- }
1268
-
1269
- .openpress-search-dialog__preview {
1270
- overflow: hidden;
1271
- min-width: 0;
1272
- color: rgb(226 229 230 / 84%);
1273
- font-family: var(--openpress-font-mono);
1274
- font-size: 11px;
1275
- line-height: 1.45;
1276
- text-overflow: ellipsis;
1277
- white-space: nowrap;
1278
- }
1279
-
1280
- .openpress-search-dialog__page {
1281
- color: rgb(240 182 76 / 82%);
1282
- font-family: var(--openpress-font-mono);
1283
- font-size: 10px;
1284
- font-weight: 650;
1285
- line-height: 1.35;
1286
- }
1287
-
1288
- .openpress-search-dialog__result:disabled .openpress-search-dialog__page {
1289
- color: rgb(160 166 173 / 58%);
1290
- }
1291
-
1292
- @keyframes openpress-toolbar-deploy-spin {
1293
- to {
1294
- transform: rotate(360deg);
1295
- }
1296
- }
1297
-
1298
- @keyframes openpress-search-spin {
1299
- to {
1300
- transform: rotate(360deg);
1301
- }
1302
- }
1303
-
1304
- @keyframes openpress-toolbar-deploy-pulse {
1305
- from {
1306
- opacity: 0.58;
1307
- }
1308
- to {
1309
- opacity: 1;
1310
- }
1311
- }
1312
-
1313
84
  .openpress-workbench-left-panel,
1314
85
  .openpress-workbench-right-panel {
1315
86
  min-width: 0;
@@ -1318,7 +89,7 @@
1318
89
  max-height: none;
1319
90
  margin: 0;
1320
91
  align-self: stretch;
1321
- background: #171717;
92
+ background: var(--openpress-workbench-panel-bg);
1322
93
  }
1323
94
 
1324
95
  .openpress-public-viewer.openpress-workbench-shell .openpress-workbench-left-panel {
@@ -1328,7 +99,7 @@
1328
99
  height: auto;
1329
100
  max-height: none;
1330
101
  align-self: stretch;
1331
- border-right: 1px solid rgb(255 255 255 / 8%);
102
+ border-right: 1px solid var(--openpress-workbench-border-muted);
1332
103
  }
1333
104
 
1334
105
  .openpress-public-viewer.openpress-workbench-shell .openpress-workbench-right-panel {
@@ -1339,7 +110,7 @@
1339
110
  height: auto;
1340
111
  max-height: none;
1341
112
  align-self: stretch;
1342
- border-left: 1px solid rgb(255 255 255 / 8%);
113
+ border-left: 1px solid var(--openpress-workbench-border-muted);
1343
114
  overflow: hidden;
1344
115
  }
1345
116