@open-press/core 0.7.0 → 0.8.0

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 (116) hide show
  1. package/engine/commands/dev.mjs +2 -2
  2. package/engine/commands/upgrade.mjs +47 -5
  3. package/engine/output/chrome-pdf.mjs +18 -3
  4. package/engine/output/static-server.mjs +39 -0
  5. package/engine/react/comment-endpoint.mjs +13 -39
  6. package/engine/react/comment-marker.mjs +30 -6
  7. package/engine/react/document-entry.mjs +11 -0
  8. package/engine/react/document-export.mjs +45 -5
  9. package/engine/react/http-json.mjs +24 -0
  10. package/engine/react/mdx-compile.mjs +187 -3
  11. package/engine/react/measurement-css.mjs +93 -1
  12. package/engine/react/object-entities.mjs +119 -0
  13. package/engine/react/pipeline/allocate.mjs +10 -7
  14. package/engine/react/pipeline/frame-measurement.mjs +40 -9
  15. package/engine/react/project-asset-endpoint.mjs +6 -24
  16. package/engine/react/source-edit-endpoint.d.mts +10 -0
  17. package/engine/react/source-edit-endpoint.mjs +75 -0
  18. package/engine/react/sources/mdx-resolver.mjs +12 -14
  19. package/engine/react/style-discovery.mjs +1 -4
  20. package/engine/runtime/file-walk.mjs +22 -0
  21. package/engine/runtime/inspection.mjs +1 -20
  22. package/engine/runtime/path-utils.mjs +20 -0
  23. package/engine/runtime/source-text-tools.d.mts +102 -0
  24. package/engine/runtime/source-text-tools.mjs +551 -16
  25. package/engine/runtime/source-workspace.mjs +4 -31
  26. package/package.json +1 -1
  27. package/src/openpress/{App.tsx → app/OpenPressApp.tsx} +25 -12
  28. package/src/openpress/{renderer.tsx → app/OpenPressRuntime.tsx} +10 -7
  29. package/src/openpress/app/index.ts +2 -0
  30. package/src/openpress/core/Frame.tsx +9 -11
  31. package/src/openpress/core/FrameContext.tsx +8 -3
  32. package/src/openpress/core/MdxArea.tsx +11 -12
  33. package/src/openpress/core/cn.ts +4 -0
  34. package/src/openpress/core/index.tsx +2 -1
  35. package/src/openpress/core/primitives.tsx +29 -8
  36. package/src/openpress/core/types.ts +8 -0
  37. package/src/openpress/{anchorMap.ts → document-model/anchorMapModel.ts} +1 -1
  38. package/src/openpress/{indexes.ts → document-model/documentIndexes.ts} +1 -1
  39. package/src/openpress/{types.ts → document-model/documentTypes.ts} +42 -0
  40. package/src/openpress/document-model/index.ts +6 -0
  41. package/src/openpress/document-model/objectEntityModel.ts +51 -0
  42. package/src/openpress/{projectIdentity.ts → document-model/projectIdentityModel.ts} +1 -1
  43. package/src/openpress/{reactDocumentMetadata.ts → document-model/reactDocumentMetadataModel.ts} +1 -1
  44. package/src/openpress/manuscript/index.tsx +49 -7
  45. package/src/openpress/{publicPage.tsx → reader/PublicReaderPage.tsx} +31 -51
  46. package/src/openpress/{workbenchPanels.tsx → reader/ReaderNavigationPanel.tsx} +6 -5
  47. package/src/openpress/reader/index.ts +10 -0
  48. package/src/openpress/reader/pageViewportScaleModel.ts +73 -0
  49. package/src/openpress/reader/readerTypes.ts +4 -0
  50. package/src/openpress/reader/usePageViewportScale.ts +119 -0
  51. package/src/openpress/reader/usePanelState.ts +56 -0
  52. package/src/openpress/reader/useReaderHashSync.ts +61 -0
  53. package/src/openpress/reader/useReaderKeyboardNav.ts +48 -0
  54. package/src/openpress/reader/useReaderRuntime.ts +146 -0
  55. package/src/openpress/reader/useReaderScrollAnchor.ts +64 -0
  56. package/src/openpress/shared/Panel.tsx +77 -0
  57. package/src/openpress/shared/index.ts +4 -0
  58. package/src/openpress/shared/numberUtils.ts +3 -0
  59. package/src/openpress/{runtimeMode.ts → shared/runtimeMode.ts} +0 -11
  60. package/src/openpress/workbench/Workbench.tsx +407 -0
  61. package/src/openpress/workbench/actions/DeploymentControl.tsx +157 -0
  62. package/src/openpress/workbench/actions/PageZoomControl.tsx +182 -0
  63. package/src/openpress/workbench/actions/SearchControl.tsx +345 -0
  64. package/src/openpress/workbench/actions/deploymentStatusModel.ts +112 -0
  65. package/src/openpress/workbench/actions/index.ts +5 -0
  66. package/src/openpress/workbench/actions/useDeploymentWorkbench.ts +136 -0
  67. package/src/openpress/workbench/dialog/WorkbenchDialog.tsx +72 -0
  68. package/src/openpress/workbench/dialog/index.ts +1 -0
  69. package/src/openpress/workbench/document/components/DocumentPanel.tsx +127 -0
  70. package/src/openpress/workbench/document/components/InlineSourceEditorLayer.tsx +207 -0
  71. package/src/openpress/workbench/document/components/ReaderStage.tsx +9 -0
  72. package/src/openpress/workbench/document/hooks/useDocumentWorkbenchModel.ts +34 -0
  73. package/src/openpress/workbench/document/hooks/useInlineDocumentEditor.ts +525 -0
  74. package/src/openpress/workbench/document/index.ts +10 -0
  75. package/src/openpress/workbench/index.ts +2 -0
  76. package/src/openpress/workbench/inspector/InlineInspectorLayer.tsx +459 -0
  77. package/src/openpress/workbench/inspector/index.ts +5 -0
  78. package/src/openpress/workbench/inspector/inlineCommentModel.ts +125 -0
  79. package/src/openpress/workbench/inspector/inspectorGeometryModel.ts +160 -0
  80. package/src/openpress/workbench/inspector/inspectorModel.ts +408 -0
  81. package/src/openpress/workbench/inspector/useInspectorComments.ts +248 -0
  82. package/src/openpress/workbench/mentions/MentionSuggestionList.tsx +41 -0
  83. package/src/openpress/workbench/mentions/index.ts +2 -0
  84. package/src/openpress/{composerMentions.ts → workbench/mentions/useComposerMentions.ts} +1 -4
  85. package/src/openpress/workbench/panels/Panel.tsx +1 -0
  86. package/src/openpress/workbench/panels/PendingCommentsPanel.tsx +76 -0
  87. package/src/openpress/workbench/panels/WorkbenchControlPanel.tsx +29 -0
  88. package/src/openpress/workbench/panels/index.ts +3 -0
  89. package/src/openpress/workbench/project/ProjectEntryPanel.tsx +523 -0
  90. package/src/openpress/workbench/project/ProjectPreviewDialog.tsx +35 -0
  91. package/src/openpress/workbench/project/index.ts +2 -0
  92. package/src/openpress/workbench/project/projectPreviewTypes.ts +11 -0
  93. package/src/openpress/workbench/shell/WorkbenchShell.tsx +167 -0
  94. package/src/openpress/workbench/shell/index.ts +1 -0
  95. package/src/openpress/workbench/workbenchFormatters.ts +120 -0
  96. package/src/openpress/workbench/workbenchTypes.ts +35 -0
  97. package/src/styles/openpress/print-route.css +0 -2
  98. package/src/styles/openpress/{project-workspace.css → project-preview-panel.css} +13 -407
  99. package/src/styles/openpress/public-viewer.css +25 -320
  100. package/src/styles/openpress/reader-runtime.css +243 -55
  101. package/src/styles/openpress/responsive.css +145 -270
  102. package/src/styles/openpress/workbench-panels.css +214 -178
  103. package/src/styles/openpress/workbench.css +986 -451
  104. package/src/styles/openpress.css +1 -1
  105. package/vite.config.ts +50 -0
  106. package/src/openpress/inspector.ts +0 -282
  107. package/src/openpress/projectWorkspace.tsx +0 -919
  108. package/src/openpress/readerRuntime.ts +0 -230
  109. package/src/openpress/workbench.tsx +0 -1265
  110. package/src/openpress/workbenchTypes.ts +0 -4
  111. /package/src/openpress/{readerPageRegistry.ts → reader/readerPageRegistry.ts} +0 -0
  112. /package/src/openpress/{pageRoute.ts → reader/readerPageRoute.ts} +0 -0
  113. /package/src/openpress/{readerScroll.ts → reader/readerScroll.ts} +0 -0
  114. /package/src/openpress/{readerState.ts → reader/readerStateModel.ts} +0 -0
  115. /package/src/openpress/{frameScheduler.ts → shared/frameScheduler.ts} +0 -0
  116. /package/src/openpress/{projectSources.ts → workbench/project/projectSourceModel.ts} +0 -0
@@ -1,20 +1,42 @@
1
1
  .openpress-reader-app .reader-pages {
2
+ --openpress-page-viewport-scale: 1;
3
+ --openpress-page-gap: 8px;
4
+ display: grid;
5
+ grid-template-columns: calc(var(--openpress-page-width) * var(--openpress-page-viewport-scale, 1));
6
+ justify-content: center;
7
+ align-items: start;
8
+ gap: var(--openpress-page-gap);
2
9
  padding: 30px 24px 56px;
3
10
  }
4
11
 
12
+ .openpress-reader-app .reader-pages[data-openpress-page-layout="spread"] {
13
+ grid-template-columns: repeat(2, calc(var(--openpress-page-width) * var(--openpress-page-viewport-scale, 1)));
14
+ }
15
+
5
16
  .openpress-reader-app .reader-page {
6
17
  scroll-margin-top: 32px;
7
18
  }
8
19
 
9
20
  .openpress-html-page {
10
- width: fit-content;
11
- max-width: 100%;
12
- margin: 0 auto 12px;
21
+ width: calc(var(--openpress-page-width) * var(--openpress-page-viewport-scale, 1));
22
+ max-width: none;
23
+ height: calc(var(--openpress-page-height) * var(--openpress-page-viewport-scale, 1));
24
+ margin: 0;
25
+ flex: 0 0 auto;
13
26
  scroll-margin-top: 72px;
14
27
  }
15
28
 
16
- /* Snap alignment only in paged mode. Reading mode lets pages grow to
17
- natural height; snap-stop would yank long sections back to the page top. */
29
+ .openpress-html-page__html {
30
+ display: block;
31
+ width: var(--openpress-page-width);
32
+ max-width: none;
33
+ height: var(--openpress-page-height);
34
+ min-height: var(--openpress-page-height);
35
+ transform: scale(var(--openpress-page-viewport-scale, 1));
36
+ transform-origin: top left;
37
+ }
38
+
39
+ /* Page Scale Model keeps document pages fixed-size, so page-by-page snap is the default. */
18
40
  [data-openpress-view-mode="paged"] .openpress-html-page,
19
41
  .openpress-reader-app:not([data-openpress-view-mode]) .openpress-html-page {
20
42
  scroll-snap-align: start;
@@ -54,6 +76,85 @@
54
76
  background: color-mix(in srgb, var(--openpress-accent, #df4b21) 16%, transparent);
55
77
  }
56
78
 
79
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"] {
80
+ border-radius: 3px;
81
+ background: transparent;
82
+ cursor: text;
83
+ caret-color: var(--openpress-accent, #df4b21);
84
+ outline: none;
85
+ transition:
86
+ background 140ms ease,
87
+ box-shadow 140ms ease,
88
+ color 140ms ease;
89
+ }
90
+
91
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"]:hover {
92
+ background:
93
+ linear-gradient(90deg, color-mix(in srgb, var(--openpress-accent, #df4b21) 9%, transparent), transparent 88%),
94
+ color-mix(in srgb, var(--openpress-accent, #df4b21) 5%, transparent);
95
+ box-shadow: inset 0 -0.18em 0 color-mix(in srgb, var(--openpress-accent, #df4b21) 16%, transparent);
96
+ }
97
+
98
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"][data-openpress-editing="true"],
99
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"]:focus {
100
+ background:
101
+ linear-gradient(90deg, color-mix(in srgb, var(--openpress-accent, #df4b21) 13%, transparent), transparent 90%),
102
+ color-mix(in srgb, var(--openpress-accent, #df4b21) 7%, transparent);
103
+ box-shadow: inset 0 -0.2em 0 color-mix(in srgb, var(--openpress-accent, #df4b21) 20%, transparent);
104
+ }
105
+
106
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"][data-openpress-edit-state="saving"] {
107
+ background:
108
+ linear-gradient(
109
+ 90deg,
110
+ color-mix(in srgb, var(--openpress-accent, #df4b21) 7%, transparent) 0%,
111
+ color-mix(in srgb, var(--openpress-accent, #df4b21) 18%, transparent) 45%,
112
+ color-mix(in srgb, var(--openpress-accent, #df4b21) 7%, transparent) 90%
113
+ );
114
+ background-size: 220% 100%;
115
+ box-shadow: none;
116
+ color: transparent;
117
+ text-shadow: none;
118
+ animation: openpress-inline-edit-skeleton 920ms linear infinite;
119
+ pointer-events: none;
120
+ user-select: none;
121
+ }
122
+
123
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"][data-openpress-edit-state="saved"] {
124
+ background: color-mix(in srgb, #22c55e 14%, transparent);
125
+ box-shadow: inset 0 -0.18em 0 color-mix(in srgb, #22c55e 24%, transparent);
126
+ }
127
+
128
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-editable-block="true"][data-openpress-edit-state="failed"] {
129
+ background: color-mix(in srgb, #ef4444 12%, transparent);
130
+ box-shadow: inset 0 -0.18em 0 color-mix(in srgb, #ef4444 24%, transparent);
131
+ }
132
+
133
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-source-editable-block="true"] {
134
+ cursor: pointer;
135
+ outline: 1px dashed transparent;
136
+ outline-offset: 5px;
137
+ transition:
138
+ background 140ms ease,
139
+ outline-color 140ms ease;
140
+ }
141
+
142
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-source-editable-block="true"]:hover,
143
+ .openpress-reader-app[data-openpress-edit-mode="on"] .openpress-html-page__html [data-openpress-source-editable-block="true"]:focus {
144
+ outline-color: color-mix(in srgb, var(--openpress-accent, #df4b21) 42%, transparent);
145
+ background: color-mix(in srgb, var(--openpress-accent, #df4b21) 7%, transparent);
146
+ }
147
+
148
+ @keyframes openpress-inline-edit-skeleton {
149
+ from {
150
+ background-position: 120% 0;
151
+ }
152
+
153
+ to {
154
+ background-position: -120% 0;
155
+ }
156
+ }
157
+
57
158
  .openpress-inline-inspector-layer {
58
159
  position: fixed;
59
160
  inset: 0;
@@ -61,6 +162,11 @@
61
162
  pointer-events: none;
62
163
  }
63
164
 
165
+ .openpress-inline-inspector-layer[data-openpress-composer-lock-events="true"] .openpress-inline-insert-target,
166
+ .openpress-inline-inspector-layer[data-openpress-composer-lock-events="true"] .openpress-inline-comment-marker {
167
+ pointer-events: none;
168
+ }
169
+
64
170
  .openpress-inline-insert-target {
65
171
  position: fixed;
66
172
  z-index: 91;
@@ -97,33 +203,50 @@
97
203
  position: fixed;
98
204
  z-index: 132;
99
205
  display: grid;
100
- width: 32px;
101
- height: 32px;
102
- place-items: center;
103
- border: 3px solid #f8fbff;
104
- border-radius: 999px;
206
+ place-items: start center;
207
+ border: 0;
208
+ border-radius: 0;
105
209
  padding: 0;
106
- background: var(--openpress-accent, #df4b21);
107
- color: white;
210
+ background: transparent;
211
+ color: #fff;
108
212
  font: inherit;
109
- font-size: 14px;
213
+ font-size: 12px;
110
214
  font-weight: 800;
111
215
  line-height: 1;
112
216
  cursor: pointer;
113
217
  pointer-events: auto;
218
+ transition: transform 160ms ease, opacity 160ms ease;
219
+ }
220
+
221
+ .openpress-inline-comment-marker__index {
222
+ position: relative;
223
+ display: grid;
224
+ width: 28px;
225
+ height: 28px;
226
+ place-items: center;
227
+ border: 3px solid #f8fbff;
228
+ border-radius: 999px;
229
+ background: var(--openpress-accent, #df4b21);
114
230
  box-shadow: 0 10px 26px rgb(0 0 0 / 24%);
115
- transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
116
231
  }
117
232
 
118
233
  .openpress-inline-comment-marker:hover,
119
234
  .openpress-inline-comment-marker:focus-visible {
120
235
  transform: translateY(-1px);
236
+ opacity: 0.9;
237
+ outline: none;
238
+ }
239
+
240
+ .openpress-inline-comment-marker:focus-visible .openpress-inline-comment-marker__index {
121
241
  outline: 2px solid color-mix(in srgb, var(--openpress-accent, #df4b21) 64%, white);
122
242
  outline-offset: 2px;
123
- box-shadow: 0 14px 32px rgb(0 0 0 / 30%);
124
243
  }
125
244
 
126
- .openpress-inline-comment-marker[data-openpress-marker-state="saved"] {
245
+ .openpress-inline-comment-marker[data-openpress-marker-state="draft"] .openpress-inline-comment-marker__index {
246
+ background: #1b7cff;
247
+ }
248
+
249
+ .openpress-inline-comment-marker[data-openpress-marker-state="saved"] .openpress-inline-comment-marker__index {
127
250
  background: color-mix(in srgb, var(--openpress-accent, #df4b21) 92%, #5f2a16);
128
251
  }
129
252
 
@@ -399,14 +522,14 @@
399
522
  color: rgb(132 211 164 / 88%);
400
523
  }
401
524
 
402
- .openpress-comments-workspace {
525
+ .openpress-comments-panel {
403
526
  min-height: 100%;
404
527
  padding: 34px clamp(22px, 4vw, 56px) 56px;
405
528
  background: #111312;
406
529
  color: #e8e8e4;
407
530
  }
408
531
 
409
- .openpress-comments-workspace__header {
532
+ .openpress-comments-panel__header {
410
533
  display: flex;
411
534
  align-items: flex-end;
412
535
  justify-content: space-between;
@@ -415,7 +538,7 @@
415
538
  border-bottom: 1px solid rgb(255 255 255 / 9%);
416
539
  }
417
540
 
418
- .openpress-comments-workspace__header h1 {
541
+ .openpress-comments-panel__header h1 {
419
542
  margin: 4px 0 6px;
420
543
  color: rgb(242 242 240 / 94%);
421
544
  font-family: var(--openpress-font-serif);
@@ -425,29 +548,29 @@
425
548
  letter-spacing: 0;
426
549
  }
427
550
 
428
- .openpress-comments-workspace__header p,
429
- .openpress-comments-workspace__eyebrow {
551
+ .openpress-comments-panel__header p,
552
+ .openpress-comments-panel__eyebrow {
430
553
  margin: 0;
431
554
  color: rgb(160 166 173 / 72%);
432
555
  font-size: 12px;
433
556
  line-height: 1.4;
434
557
  }
435
558
 
436
- .openpress-comments-workspace__eyebrow {
559
+ .openpress-comments-panel__eyebrow {
437
560
  display: block;
438
561
  font-weight: 700;
439
562
  letter-spacing: 0.06em;
440
563
  text-transform: uppercase;
441
564
  }
442
565
 
443
- .openpress-comments-workspace__actions {
566
+ .openpress-comments-panel__actions {
444
567
  display: flex;
445
568
  flex-wrap: wrap;
446
569
  gap: 8px;
447
570
  justify-content: flex-end;
448
571
  }
449
572
 
450
- .openpress-comments-workspace button {
573
+ .openpress-comments-panel button {
451
574
  display: inline-flex;
452
575
  min-height: 34px;
453
576
  align-items: center;
@@ -464,22 +587,22 @@
464
587
  cursor: pointer;
465
588
  }
466
589
 
467
- .openpress-comments-workspace button:hover:not(:disabled) {
590
+ .openpress-comments-panel button:hover:not(:disabled) {
468
591
  border-color: rgb(255 255 255 / 20%);
469
592
  background: rgb(255 255 255 / 8%);
470
593
  }
471
594
 
472
- .openpress-comments-workspace button:disabled {
595
+ .openpress-comments-panel button:disabled {
473
596
  cursor: not-allowed;
474
597
  opacity: 0.46;
475
598
  }
476
599
 
477
- .openpress-comments-workspace button svg {
600
+ .openpress-comments-panel button svg {
478
601
  width: 14px;
479
602
  height: 14px;
480
603
  }
481
604
 
482
- .openpress-comments-workspace__error {
605
+ .openpress-comments-panel__error {
483
606
  margin: 18px 0 0;
484
607
  border-left: 3px solid rgb(248 113 113 / 76%);
485
608
  padding: 8px 0 8px 12px;
@@ -488,7 +611,7 @@
488
611
  line-height: 1.45;
489
612
  }
490
613
 
491
- .openpress-comments-workspace__empty {
614
+ .openpress-comments-panel__empty {
492
615
  margin-top: 22px;
493
616
  border: 1px dashed rgb(255 255 255 / 13%);
494
617
  border-radius: 8px;
@@ -587,21 +710,21 @@
587
710
  line-height: 1.2;
588
711
  }
589
712
 
590
- .openpress-comments-workspace--panel {
713
+ .openpress-comments-panel--embedded {
591
714
  min-height: 0;
592
715
  overflow: auto;
593
716
  padding: 6px 22px 18px;
594
717
  background: transparent;
595
718
  }
596
719
 
597
- .openpress-comments-workspace--panel .openpress-comments-workspace__header {
720
+ .openpress-comments-panel--embedded .openpress-comments-panel__header {
598
721
  display: grid;
599
722
  gap: 10px;
600
723
  align-items: start;
601
724
  padding-bottom: 12px;
602
725
  }
603
726
 
604
- .openpress-comments-workspace--panel .openpress-comments-workspace__header h1 {
727
+ .openpress-comments-panel--embedded .openpress-comments-panel__header h1 {
605
728
  margin: 2px 0 3px;
606
729
  font-family: inherit;
607
730
  font-size: 14px;
@@ -609,23 +732,23 @@
609
732
  line-height: 1.35;
610
733
  }
611
734
 
612
- .openpress-comments-workspace--panel .openpress-comments-workspace__header p,
613
- .openpress-comments-workspace--panel .openpress-comments-workspace__eyebrow {
735
+ .openpress-comments-panel--embedded .openpress-comments-panel__header p,
736
+ .openpress-comments-panel--embedded .openpress-comments-panel__eyebrow {
614
737
  font-size: 11px;
615
738
  }
616
739
 
617
- .openpress-comments-workspace--panel .openpress-comments-workspace__actions {
740
+ .openpress-comments-panel--embedded .openpress-comments-panel__actions {
618
741
  justify-content: flex-start;
619
742
  }
620
743
 
621
- .openpress-comments-workspace--panel .openpress-comments-workspace__actions button {
744
+ .openpress-comments-panel--embedded .openpress-comments-panel__actions button {
622
745
  width: 34px;
623
746
  min-height: 30px;
624
747
  padding: 0;
625
748
  font-size: 11px;
626
749
  }
627
750
 
628
- .openpress-comments-workspace--panel .openpress-comments-workspace__actions button span {
751
+ .openpress-comments-panel--embedded .openpress-comments-panel__actions button span {
629
752
  position: absolute;
630
753
  width: 1px;
631
754
  height: 1px;
@@ -634,30 +757,91 @@
634
757
  white-space: nowrap;
635
758
  }
636
759
 
637
- .openpress-comments-workspace--panel .openpress-comments-list {
638
- gap: 10px;
639
- margin-top: 10px;
760
+ .openpress-comments-panel--embedded .openpress-comments-list {
761
+ gap: 0;
762
+ margin-top: 6px;
640
763
  }
641
764
 
642
- .openpress-comments-workspace--panel .openpress-comment-entry {
643
- grid-template-columns: minmax(0, 1fr);
644
- gap: 10px;
645
- padding: 12px;
765
+ .openpress-comments-panel--embedded .openpress-comment-entry {
766
+ grid-template-columns: minmax(0, 1fr) 24px;
767
+ gap: 8px;
768
+ align-items: center;
769
+ border: 0;
770
+ border-top: 1px solid rgb(255 255 255 / 7%);
771
+ border-radius: 0;
772
+ padding: 8px 0;
773
+ background: transparent;
646
774
  }
647
775
 
648
- .openpress-comments-workspace--panel .openpress-comment-entry__note {
649
- font-size: 12px;
650
- line-height: 1.45;
776
+ .openpress-comments-panel--embedded .openpress-comment-entry__note {
777
+ overflow: hidden;
778
+ display: -webkit-box;
779
+ color: rgb(232 232 228 / 86%);
780
+ font-size: 11.5px;
781
+ font-weight: 520;
782
+ line-height: 1.35;
783
+ -webkit-box-orient: vertical;
784
+ -webkit-line-clamp: 2;
651
785
  }
652
786
 
653
- .openpress-comments-workspace--panel .openpress-comment-entry button {
654
- width: fit-content;
655
- min-height: 30px;
656
- padding: 6px 8px;
657
- font-size: 11px;
787
+ .openpress-comments-panel--embedded .openpress-comment-entry__meta {
788
+ margin-top: 4px;
789
+ gap: 6px;
790
+ color: rgb(150 156 163 / 54%);
791
+ font-size: 10px;
792
+ line-height: 1.25;
658
793
  }
659
794
 
660
- .openpress-comments-workspace--panel .openpress-comments-workspace__empty {
795
+ .openpress-comments-panel--embedded .openpress-comment-entry__meta code {
796
+ border: 0;
797
+ padding: 0;
798
+ background: transparent;
799
+ color: inherit;
800
+ }
801
+
802
+ .openpress-comments-panel--embedded .openpress-comment-entry__jump {
803
+ display: grid;
804
+ width: 100%;
805
+ min-width: 0;
806
+ min-height: 0;
807
+ justify-items: start;
808
+ border: 0;
809
+ border-radius: 4px;
810
+ padding: 0;
811
+ background: transparent;
812
+ color: inherit;
813
+ font: inherit;
814
+ text-align: left;
815
+ }
816
+
817
+ .openpress-comments-panel--embedded .openpress-comment-entry__jump:hover {
818
+ background: transparent;
819
+ color: rgb(242 242 240 / 96%);
820
+ }
821
+
822
+ .openpress-comments-panel--embedded .openpress-comment-entry__clear {
823
+ width: 24px;
824
+ min-height: 24px;
825
+ border: 0;
826
+ border-radius: 4px;
827
+ padding: 0;
828
+ background: transparent;
829
+ color: rgb(150 156 163 / 64%);
830
+ font-size: 0;
831
+ }
832
+
833
+ .openpress-comments-panel--embedded .openpress-comment-entry__clear:hover:not(:disabled) {
834
+ border: 0;
835
+ background: rgb(255 255 255 / 5%);
836
+ color: rgb(242 242 240 / 90%);
837
+ }
838
+
839
+ .openpress-comments-panel--embedded .openpress-comment-entry__clear svg {
840
+ width: 13px;
841
+ height: 13px;
842
+ }
843
+
844
+ .openpress-comments-panel--embedded .openpress-comments-panel__empty {
661
845
  margin-top: 10px;
662
846
  padding: 14px;
663
847
  font-size: 12px;
@@ -665,10 +849,14 @@
665
849
 
666
850
  .openpress-html-page__html .reader-page {
667
851
  display: block;
668
- width: min(var(--openpress-page-width), calc(100cqw - 48px));
669
- height: calc(min(var(--openpress-page-width), calc(100cqw - 48px)) * var(--openpress-page-height-ratio, 1.4142857143));
852
+ width: var(--openpress-page-width);
853
+ max-width: none;
854
+ height: var(--openpress-page-height);
855
+ min-height: var(--openpress-page-height);
856
+ max-height: none;
670
857
  aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
671
858
  margin: 0;
859
+ overflow: hidden;
672
860
  box-shadow: 0 16px 48px rgb(0 0 0 / 24%);
673
861
  }
674
862