@open-press/core 1.2.0 → 1.3.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 (76) hide show
  1. package/README.md +2 -2
  2. package/engine/cli.mjs +1 -1
  3. package/engine/commands/_shared.mjs +10 -5
  4. package/engine/commands/deploy.mjs +19 -4
  5. package/engine/commands/typecheck.mjs +1 -1
  6. package/engine/document-export.mjs +1 -1
  7. package/engine/output/page-block.mjs +11 -2
  8. package/engine/output/public-assets.mjs +41 -6
  9. package/engine/output/static-server.mjs +84 -24
  10. package/engine/react/caption-numbering.mjs +2 -2
  11. package/engine/react/comment-marker.mjs +1 -2
  12. package/engine/react/document-entry.mjs +64 -11
  13. package/engine/react/document-export.d.mts +6 -0
  14. package/engine/react/document-export.mjs +158 -28
  15. package/engine/react/mdx-compile.mjs +4 -4
  16. package/engine/react/measurement-css.mjs +3 -3
  17. package/engine/react/page-folio.mjs +37 -0
  18. package/engine/react/pagination/allocator.mjs +4 -4
  19. package/engine/react/pipeline/frame-measurement.mjs +34 -16
  20. package/engine/react/press-tree-inspection.mjs +43 -13
  21. package/engine/react/project-asset-endpoint.mjs +45 -11
  22. package/engine/react/sources/heading-numbering.mjs +2 -2
  23. package/engine/react/sources/mdx-resolver.mjs +3 -3
  24. package/engine/react/style-discovery.mjs +60 -11
  25. package/engine/react/text-source-transform.mjs +18 -4
  26. package/engine/runtime/config.mjs +22 -22
  27. package/engine/runtime/file-utils.mjs +57 -13
  28. package/engine/runtime/inspection.mjs +40 -15
  29. package/engine/runtime/page-geometry.mjs +6 -6
  30. package/engine/runtime/source-text-tools.mjs +28 -4
  31. package/engine/runtime/source-workspace.mjs +6 -9
  32. package/engine/runtime/validation.mjs +42 -24
  33. package/package.json +1 -1
  34. package/src/openpress/app/OpenPressApp.tsx +10 -16
  35. package/src/openpress/app/OpenPressRuntime.tsx +29 -4
  36. package/src/openpress/app/WorkspaceGalleryPage.tsx +1 -1
  37. package/src/openpress/core/PageFolio.tsx +115 -0
  38. package/src/openpress/core/Press.tsx +5 -10
  39. package/src/openpress/core/Slide.tsx +11 -0
  40. package/src/openpress/core/index.tsx +4 -0
  41. package/src/openpress/core/types.ts +21 -13
  42. package/src/openpress/core/useSource.ts +1 -1
  43. package/src/openpress/document-model/workspaceManifestModel.ts +4 -9
  44. package/src/openpress/reader/PageThumbnailsPanel.tsx +28 -5
  45. package/src/openpress/reader/SlidePresentationPage.tsx +36 -19
  46. package/src/openpress/reader/SlidePublicPage.tsx +332 -0
  47. package/src/openpress/reader/index.ts +1 -0
  48. package/src/openpress/reader/pageViewportScaleModel.ts +5 -3
  49. package/src/openpress/reader/usePageViewportScale.ts +9 -5
  50. package/src/openpress/workbench/Workbench.tsx +46 -164
  51. package/src/openpress/workbench/actions/DeploymentControl.tsx +1 -1
  52. package/src/openpress/workbench/actions/ExportControl.tsx +267 -0
  53. package/src/openpress/workbench/actions/index.ts +1 -1
  54. package/src/openpress/workbench/actions/useDeploymentWorkbench.ts +7 -2
  55. package/src/openpress/workbench/hooks/useWorkbenchNavigation.ts +42 -0
  56. package/src/openpress/workbench/project/ProjectEntryPanel.tsx +2 -278
  57. package/src/openpress/workbench/shell/WorkbenchToolbarActions.tsx +206 -0
  58. package/src/styles/openpress/app-shell.css +0 -83
  59. package/src/styles/openpress/print-route.css +1 -3
  60. package/src/styles/openpress/project-preview-panel.css +5 -783
  61. package/src/styles/openpress/public-viewer.css +7 -249
  62. package/src/styles/openpress/reader-runtime.css +0 -274
  63. package/src/styles/openpress/slide-presenter.css +150 -0
  64. package/src/styles/openpress/slide-public-viewer.css +222 -0
  65. package/src/styles/openpress/workbench-dialog.css +267 -0
  66. package/src/styles/openpress/workbench-export.css +154 -0
  67. package/src/styles/openpress/workbench-inline-editor.css +128 -0
  68. package/src/styles/openpress/workbench-panels.css +0 -88
  69. package/src/styles/openpress/workbench-search.css +257 -0
  70. package/src/styles/openpress/workbench-toolbar.css +422 -0
  71. package/src/styles/openpress/workbench.css +34 -1263
  72. package/src/styles/openpress/workspace-gallery.css +0 -5
  73. package/src/styles/openpress.css +7 -1
  74. package/vite.config.ts +98 -25
  75. package/src/openpress/workbench/actions/ExportImageControl.tsx +0 -96
  76. package/src/styles/openpress/media-workspace.css +0 -230
@@ -0,0 +1,154 @@
1
+ /* ─── Export Control (toolbar button override) ───────────── */
2
+
3
+ [data-openpress-export-control] .openpress-workbench-zoom-control {
4
+ max-width: 110px;
5
+ overflow: visible;
6
+ font-family: inherit;
7
+ font-size: 11px;
8
+ font-weight: 560;
9
+ color: #d8dadd;
10
+ }
11
+
12
+ /* ─── Export Dialog ──────────────────────────────────────── */
13
+
14
+ .openpress-export-png-dialog {
15
+ width: min(680px, calc(100vw - 56px));
16
+ }
17
+
18
+ .openpress-export-dialog .openpress-workbench-dialog__footer {
19
+ gap: 8px;
20
+ justify-content: flex-end;
21
+ }
22
+
23
+ .openpress-export-dialog__action {
24
+ display: inline-flex;
25
+ height: 30px;
26
+ align-items: center;
27
+ justify-content: center;
28
+ gap: 7px;
29
+ border: 1px solid var(--openpress-workbench-border);
30
+ border-radius: var(--openpress-workbench-radius-sm);
31
+ padding: 0 12px;
32
+ background: transparent;
33
+ color: var(--openpress-workbench-text-soft);
34
+ font: inherit;
35
+ font-size: 11px;
36
+ font-weight: 560;
37
+ cursor: pointer;
38
+ text-decoration: none;
39
+ }
40
+
41
+ .openpress-export-dialog__action:hover:not(:disabled) {
42
+ border-color: rgb(240 182 76 / 34%);
43
+ color: var(--openpress-workbench-accent);
44
+ }
45
+
46
+ .openpress-export-dialog__action:disabled {
47
+ cursor: not-allowed;
48
+ opacity: 0.46;
49
+ }
50
+
51
+ .openpress-export-dialog__action svg {
52
+ width: 13px;
53
+ height: 13px;
54
+ }
55
+
56
+ .openpress-export-dialog__body {
57
+ padding: 20px 24px 24px;
58
+ }
59
+
60
+ .openpress-export-dialog__summary {
61
+ margin: 0;
62
+ color: rgb(180 186 192 / 70%);
63
+ font-size: 12px;
64
+ line-height: 1.5;
65
+ }
66
+
67
+ .openpress-export-dialog__selection-bar {
68
+ display: flex;
69
+ min-height: 42px;
70
+ align-items: center;
71
+ justify-content: space-between;
72
+ gap: 12px;
73
+ border-bottom: 1px solid var(--openpress-workbench-border-muted);
74
+ padding: 10px 16px;
75
+ color: var(--openpress-workbench-muted);
76
+ font-size: 11px;
77
+ line-height: 1.3;
78
+ }
79
+
80
+ .openpress-export-dialog__selection-actions {
81
+ display: inline-flex;
82
+ gap: 6px;
83
+ flex: 0 0 auto;
84
+ }
85
+
86
+ .openpress-export-dialog__selection-actions button {
87
+ height: 26px;
88
+ border: 1px solid var(--openpress-workbench-border-muted);
89
+ border-radius: var(--openpress-workbench-radius-sm);
90
+ padding: 0 9px;
91
+ background: transparent;
92
+ color: var(--openpress-workbench-text-soft);
93
+ font: inherit;
94
+ font-size: 11px;
95
+ cursor: pointer;
96
+ }
97
+
98
+ .openpress-export-dialog__selection-actions button:hover {
99
+ border-color: rgb(240 182 76 / 34%);
100
+ color: var(--openpress-workbench-accent);
101
+ }
102
+
103
+ .openpress-export-dialog__thumbs {
104
+ overflow-y: auto;
105
+ padding: 8px 16px 16px;
106
+ scrollbar-width: thin;
107
+ scrollbar-color: rgb(255 255 255 / 14%) transparent;
108
+ }
109
+
110
+ .openpress-export-dialog__thumbs .openpress-thumb-list {
111
+ display: grid;
112
+ grid-template-columns: 1fr 1fr;
113
+ gap: 8px;
114
+ list-style: none;
115
+ margin: 0;
116
+ padding: 0;
117
+ }
118
+
119
+ .openpress-export-dialog__thumbs .openpress-thumb-card {
120
+ cursor: pointer;
121
+ }
122
+
123
+ .openpress-export-dialog__thumbs .openpress-thumb-card {
124
+ position: relative;
125
+ }
126
+
127
+ .openpress-export-dialog__thumbs .openpress-thumb-card.is-selected {
128
+ border-color: rgb(240 182 76 / 62%);
129
+ background: rgb(240 182 76 / 7%);
130
+ }
131
+
132
+ .openpress-thumb-card__check {
133
+ position: absolute;
134
+ top: 8px;
135
+ right: 8px;
136
+ z-index: 2;
137
+ display: inline-flex;
138
+ width: 20px;
139
+ height: 20px;
140
+ align-items: center;
141
+ justify-content: center;
142
+ border: 1px solid rgb(255 255 255 / 32%);
143
+ border-radius: 999px;
144
+ background: rgb(18 18 18 / 82%);
145
+ color: var(--openpress-workbench-accent);
146
+ font-size: 13px;
147
+ font-weight: 700;
148
+ line-height: 1;
149
+ box-shadow: 0 6px 18px rgb(0 0 0 / 28%);
150
+ }
151
+
152
+ .openpress-thumb-card:not(.is-selected) .openpress-thumb-card__check {
153
+ color: transparent;
154
+ }
@@ -0,0 +1,128 @@
1
+ .openpress-inline-source-editor-layer {
2
+ position: fixed;
3
+ inset: 0;
4
+ z-index: 980;
5
+ pointer-events: none;
6
+ }
7
+
8
+ .openpress-inline-source-editor {
9
+ position: fixed;
10
+ display: grid;
11
+ gap: 10px;
12
+ max-width: calc(100vw - 28px);
13
+ border: 1px solid var(--openpress-workbench-border);
14
+ border-radius: var(--openpress-workbench-radius-md);
15
+ padding: 12px;
16
+ background: var(--openpress-workbench-dialog-bg);
17
+ color: var(--openpress-workbench-text);
18
+ box-shadow: 0 18px 46px rgb(0 0 0 / 34%);
19
+ pointer-events: auto;
20
+ }
21
+
22
+ .openpress-inline-source-editor__header,
23
+ .openpress-inline-source-editor__footer {
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: space-between;
27
+ gap: 10px;
28
+ min-width: 0;
29
+ }
30
+
31
+ .openpress-inline-source-editor__header > div {
32
+ display: grid;
33
+ gap: 4px;
34
+ min-width: 0;
35
+ }
36
+
37
+ .openpress-inline-source-editor__header strong {
38
+ overflow: hidden;
39
+ font-size: 12px;
40
+ font-weight: 650;
41
+ line-height: 1.1;
42
+ text-overflow: ellipsis;
43
+ white-space: nowrap;
44
+ }
45
+
46
+ .openpress-inline-source-editor__eyebrow {
47
+ color: rgb(174 179 184 / 58%);
48
+ font-family: var(--openpress-font-mono);
49
+ font-size: 9px;
50
+ font-weight: 700;
51
+ letter-spacing: 0.08em;
52
+ }
53
+
54
+ .openpress-inline-source-editor__header button,
55
+ .openpress-inline-source-editor__footer button {
56
+ min-height: 28px;
57
+ border: 1px solid var(--openpress-workbench-border);
58
+ border-radius: var(--openpress-workbench-radius-sm);
59
+ background: transparent;
60
+ color: rgb(242 242 238 / 82%);
61
+ font: inherit;
62
+ font-size: 11px;
63
+ cursor: pointer;
64
+ }
65
+
66
+ .openpress-inline-source-editor__header button {
67
+ width: 28px;
68
+ padding: 0;
69
+ font-size: 15px;
70
+ }
71
+
72
+ .openpress-inline-source-editor__footer button {
73
+ padding: 0 10px;
74
+ }
75
+
76
+ .openpress-inline-source-editor__footer button:last-child {
77
+ border-color: rgb(240 182 76 / 28%);
78
+ background: rgb(240 182 76 / 9%);
79
+ color: var(--openpress-workbench-accent);
80
+ }
81
+
82
+ .openpress-inline-source-editor__footer button:disabled {
83
+ cursor: progress;
84
+ opacity: 0.54;
85
+ }
86
+
87
+ .openpress-inline-source-editor textarea {
88
+ width: 100%;
89
+ min-height: 126px;
90
+ resize: vertical;
91
+ border: 1px solid var(--openpress-workbench-border);
92
+ border-radius: var(--openpress-workbench-radius-sm);
93
+ padding: 10px;
94
+ background: rgb(0 0 0 / 24%);
95
+ color: rgb(242 242 238 / 92%);
96
+ font-family: var(--openpress-font-mono);
97
+ font-size: 11px;
98
+ line-height: 1.55;
99
+ outline: none;
100
+ }
101
+
102
+ .openpress-inline-source-editor textarea:focus {
103
+ border-color: rgb(240 182 76 / 42%);
104
+ box-shadow: 0 0 0 1px rgb(240 182 76 / 16%);
105
+ }
106
+
107
+ .openpress-inline-source-editor__footer > span {
108
+ min-width: 0;
109
+ overflow: hidden;
110
+ color: rgb(174 179 184 / 70%);
111
+ font-size: 10px;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
114
+ }
115
+
116
+ .openpress-inline-source-editor__footer > span[data-openpress-source-editor-status="saving"] {
117
+ color: rgb(240 182 76 / 88%);
118
+ }
119
+
120
+ .openpress-inline-source-editor__footer > span[data-openpress-source-editor-status="failed"] {
121
+ color: var(--openpress-workbench-danger);
122
+ }
123
+
124
+ .openpress-inline-source-editor__footer > div {
125
+ display: inline-flex;
126
+ gap: 6px;
127
+ flex: 0 0 auto;
128
+ }
@@ -1,7 +1,3 @@
1
- .openpress-html-source {
2
- display: contents;
3
- }
4
-
5
1
  .openpress-workspace-panel {
6
2
  min-width: 0;
7
3
  height: 100%;
@@ -329,79 +325,6 @@
329
325
  text-transform: uppercase;
330
326
  }
331
327
 
332
- .openpress-asset-index {
333
- display: grid;
334
- grid-template-rows: auto minmax(0, 1fr);
335
- max-height: 38vh;
336
- border-top: 1px solid rgb(255 255 255 / 8%);
337
- padding: 16px 0 18px;
338
- overflow: hidden;
339
- }
340
-
341
- .openpress-asset-list {
342
- display: flex;
343
- min-height: 0;
344
- flex-direction: column;
345
- gap: 2px;
346
- overflow: auto;
347
- padding: 0 18px 0 30px;
348
- scrollbar-width: none;
349
- }
350
-
351
- .openpress-asset-list::-webkit-scrollbar {
352
- width: 0;
353
- height: 0;
354
- display: none;
355
- }
356
-
357
- .openpress-asset-link {
358
- display: grid;
359
- grid-template-columns: 44px minmax(0, 1fr);
360
- gap: 10px;
361
- align-items: baseline;
362
- padding: 7px 0;
363
- color: #9aa0a6;
364
- text-decoration: none;
365
- }
366
-
367
- .openpress-asset-link:hover {
368
- color: #f1f1ef;
369
- }
370
-
371
- .openpress-asset-label {
372
- color: #d95a36;
373
- font-size: 11px;
374
- font-variant-numeric: tabular-nums;
375
- white-space: nowrap;
376
- }
377
-
378
- .openpress-asset-link--table .openpress-asset-label {
379
- color: #d7a034;
380
- }
381
-
382
- .openpress-asset-title {
383
- display: -webkit-box;
384
- min-width: 0;
385
- overflow: hidden;
386
- font-size: 12px;
387
- line-height: 1.38;
388
- word-break: keep-all;
389
- -webkit-box-orient: vertical;
390
- -webkit-line-clamp: 2;
391
- }
392
-
393
- .openpress-asset-title small {
394
- display: block;
395
- margin-top: 3px;
396
- overflow: hidden;
397
- color: #62676d;
398
- font-size: 10px;
399
- font-weight: 400;
400
- line-height: 1.25;
401
- text-overflow: ellipsis;
402
- white-space: nowrap;
403
- }
404
-
405
328
  .openpress-asset-empty {
406
329
  margin: 0;
407
330
  padding: 0 18px 0 30px;
@@ -666,17 +589,6 @@
666
589
  border-radius: 4px;
667
590
  }
668
591
 
669
- .openpress-reader-app .openpress-thumb-card__page-host {
670
- position: absolute;
671
- inset: 0;
672
- }
673
-
674
- .openpress-reader-app .openpress-thumb-card__page-host .openpress-public-page {
675
- display: block;
676
- pointer-events: none;
677
- user-select: none;
678
- }
679
-
680
592
  .openpress-reader-app .openpress-thumb-card__frame {
681
593
  position: relative;
682
594
  }
@@ -0,0 +1,257 @@
1
+ .openpress-search-dialog-backdrop {
2
+ z-index: 1001;
3
+ padding: calc(var(--openpress-workbench-toolbar-height, 44px) + 24px) 24px 24px;
4
+ background: rgb(0 0 0 / 46%);
5
+ }
6
+
7
+ .openpress-search-dialog {
8
+ width: min(640px, calc(100vw - 48px));
9
+ max-height: min(72vh, 760px);
10
+ grid-template-rows: auto auto minmax(0, 1fr);
11
+ box-shadow: 0 24px 72px rgb(0 0 0 / 44%);
12
+ }
13
+
14
+ .openpress-search-dialog__header {
15
+ gap: 16px;
16
+ padding: 16px 48px 10px 16px;
17
+ }
18
+
19
+ .openpress-search-dialog__form {
20
+ display: grid;
21
+ gap: 10px;
22
+ border-top: 1px solid var(--openpress-workbench-border-muted);
23
+ border-bottom: 1px solid var(--openpress-workbench-border-muted);
24
+ padding: 12px 16px;
25
+ }
26
+
27
+ .openpress-search-dialog__input-row {
28
+ display: grid;
29
+ grid-template-columns: 16px minmax(0, 1fr) auto;
30
+ gap: 8px;
31
+ align-items: center;
32
+ min-height: 34px;
33
+ border: 1px solid var(--openpress-workbench-border);
34
+ border-radius: 5px;
35
+ padding: 0 7px 0 10px;
36
+ background: rgb(255 255 255 / 4%);
37
+ }
38
+
39
+ .openpress-search-dialog__input-row > svg {
40
+ width: 13px;
41
+ height: 13px;
42
+ color: var(--openpress-workbench-muted);
43
+ }
44
+
45
+ .openpress-search-dialog__input-row input {
46
+ min-width: 0;
47
+ border: 0;
48
+ padding: 0;
49
+ background: transparent;
50
+ color: var(--openpress-workbench-text);
51
+ font: inherit;
52
+ font-size: 12px;
53
+ outline: 0;
54
+ }
55
+
56
+ .openpress-search-dialog__input-row input::placeholder {
57
+ color: rgb(160 166 173 / 54%);
58
+ }
59
+
60
+ .openpress-search-dialog__input-row button {
61
+ display: inline-flex;
62
+ height: 26px;
63
+ align-items: center;
64
+ justify-content: center;
65
+ gap: 6px;
66
+ border: 1px solid transparent;
67
+ border-radius: var(--openpress-workbench-radius-sm);
68
+ padding: 0 9px;
69
+ background: transparent;
70
+ color: rgb(214 218 222 / 82%);
71
+ font: inherit;
72
+ font-size: 11px;
73
+ font-weight: 560;
74
+ cursor: pointer;
75
+ }
76
+
77
+ .openpress-search-dialog__input-row button:hover:not(:disabled) {
78
+ color: var(--openpress-workbench-accent);
79
+ }
80
+
81
+ .openpress-search-dialog__input-row button:disabled {
82
+ cursor: progress;
83
+ opacity: 0.62;
84
+ }
85
+
86
+ .openpress-search-dialog__input-row button svg {
87
+ width: 12px;
88
+ height: 12px;
89
+ }
90
+
91
+ .openpress-search-dialog__input-row button:disabled svg,
92
+ .openpress-search-dialog__empty svg {
93
+ animation: openpress-search-spin 0.9s linear infinite;
94
+ }
95
+
96
+ .openpress-search-dialog__empty,
97
+ .openpress-search-dialog__error {
98
+ display: flex;
99
+ align-items: center;
100
+ gap: 8px;
101
+ margin: 0;
102
+ padding: 18px 16px;
103
+ color: rgb(160 166 173 / 72%);
104
+ font-size: 12px;
105
+ line-height: 1.5;
106
+ }
107
+
108
+ .openpress-search-dialog__empty svg {
109
+ width: 13px;
110
+ height: 13px;
111
+ }
112
+
113
+ .openpress-search-dialog__error {
114
+ color: rgb(248 113 113 / 88%);
115
+ }
116
+
117
+ .openpress-search-dialog__results {
118
+ min-height: 0;
119
+ overflow: auto;
120
+ padding: 12px 16px 16px;
121
+ }
122
+
123
+ .openpress-search-dialog__summary {
124
+ margin: 0 0 10px;
125
+ color: var(--openpress-workbench-muted);
126
+ font-size: 11px;
127
+ line-height: 1.35;
128
+ }
129
+
130
+ .openpress-search-dialog__file {
131
+ display: grid;
132
+ gap: 7px;
133
+ margin: 0 0 12px;
134
+ padding-bottom: 12px;
135
+ border-bottom: 1px solid var(--openpress-workbench-border-muted);
136
+ }
137
+
138
+ .openpress-search-dialog__file:last-child {
139
+ margin-bottom: 0;
140
+ padding-bottom: 0;
141
+ border-bottom: 0;
142
+ }
143
+
144
+ .openpress-search-dialog__file h3 {
145
+ display: grid;
146
+ min-width: 0;
147
+ grid-template-columns: 14px minmax(0, 1fr) auto;
148
+ gap: 7px;
149
+ align-items: center;
150
+ margin: 0;
151
+ color: rgb(226 229 230 / 90%);
152
+ font-size: 12px;
153
+ font-weight: 650;
154
+ line-height: 1.25;
155
+ }
156
+
157
+ .openpress-search-dialog__file h3 svg {
158
+ width: 12px;
159
+ height: 12px;
160
+ color: rgb(240 182 76 / 82%);
161
+ }
162
+
163
+ .openpress-search-dialog__file h3 span {
164
+ overflow: hidden;
165
+ min-width: 0;
166
+ text-overflow: ellipsis;
167
+ white-space: nowrap;
168
+ }
169
+
170
+ .openpress-search-dialog__file h3 small {
171
+ display: inline-flex;
172
+ min-width: 20px;
173
+ height: 18px;
174
+ align-items: center;
175
+ justify-content: center;
176
+ border: 1px solid var(--openpress-workbench-glass-border);
177
+ border-radius: var(--openpress-workbench-radius-pill);
178
+ color: rgb(160 166 173 / 78%);
179
+ font-size: 10px;
180
+ font-weight: 650;
181
+ }
182
+
183
+ .openpress-search-dialog__file ol {
184
+ display: grid;
185
+ gap: 5px;
186
+ margin: 0;
187
+ padding: 0;
188
+ list-style: none;
189
+ }
190
+
191
+ .openpress-search-dialog__file li {
192
+ display: block;
193
+ min-width: 0;
194
+ }
195
+
196
+ .openpress-search-dialog__result {
197
+ display: grid;
198
+ width: 100%;
199
+ min-width: 0;
200
+ grid-template-columns: 44px minmax(0, 1fr) auto;
201
+ gap: 10px;
202
+ align-items: baseline;
203
+ border-radius: var(--openpress-workbench-radius-sm);
204
+ border: 1px solid transparent;
205
+ padding: 6px 7px;
206
+ background: rgb(255 255 255 / 3%);
207
+ color: inherit;
208
+ font: inherit;
209
+ text-align: left;
210
+ cursor: pointer;
211
+ }
212
+
213
+ .openpress-search-dialog__result:hover:not(:disabled) {
214
+ border-color: rgb(240 182 76 / 18%);
215
+ background: rgb(240 182 76 / 7%);
216
+ }
217
+
218
+ .openpress-search-dialog__result:disabled {
219
+ cursor: default;
220
+ opacity: 0.68;
221
+ }
222
+
223
+ .openpress-search-dialog__line {
224
+ color: rgb(160 166 173 / 74%);
225
+ font-family: var(--openpress-font-mono);
226
+ font-size: 10px;
227
+ line-height: 1.35;
228
+ }
229
+
230
+ .openpress-search-dialog__preview {
231
+ overflow: hidden;
232
+ min-width: 0;
233
+ color: rgb(226 229 230 / 84%);
234
+ font-family: var(--openpress-font-mono);
235
+ font-size: 11px;
236
+ line-height: 1.45;
237
+ text-overflow: ellipsis;
238
+ white-space: nowrap;
239
+ }
240
+
241
+ .openpress-search-dialog__page {
242
+ color: rgb(240 182 76 / 82%);
243
+ font-family: var(--openpress-font-mono);
244
+ font-size: 10px;
245
+ font-weight: 650;
246
+ line-height: 1.35;
247
+ }
248
+
249
+ .openpress-search-dialog__result:disabled .openpress-search-dialog__page {
250
+ color: rgb(160 166 173 / 58%);
251
+ }
252
+
253
+ @keyframes openpress-search-spin {
254
+ to {
255
+ transform: rotate(360deg);
256
+ }
257
+ }