@open-press/cli 0.7.1 → 1.0.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 (234) hide show
  1. package/README.md +29 -13
  2. package/dist/cli.js +44 -195
  3. package/package.json +4 -5
  4. package/template/core/AGENTS.md +18 -14
  5. package/template/core/CHANGELOG.md +57 -9
  6. package/template/core/README.md +6 -3
  7. package/template/core/engine/cli.mjs +8 -8
  8. package/template/core/engine/commands/_shared.mjs +37 -15
  9. package/template/core/engine/commands/dev.mjs +2 -2
  10. package/template/core/engine/commands/image.mjs +29 -0
  11. package/template/core/engine/commands/skills-sync.mjs +71 -0
  12. package/template/core/engine/commands/typecheck.mjs +63 -1
  13. package/template/core/engine/commands/upgrade.mjs +3 -3
  14. package/template/core/engine/document-export.mjs +1 -1
  15. package/template/core/engine/output/chrome-pdf.mjs +110 -3
  16. package/template/core/engine/output/static-server.mjs +87 -9
  17. package/template/core/engine/react/comment-endpoint.mjs +13 -39
  18. package/template/core/engine/react/comment-marker.mjs +43 -19
  19. package/template/core/engine/react/document-entry.mjs +46 -28
  20. package/template/core/engine/react/document-export.mjs +328 -164
  21. package/template/core/engine/react/http-json.mjs +24 -0
  22. package/template/core/engine/react/mdx-compile.mjs +126 -3
  23. package/template/core/engine/react/measurement-css.mjs +114 -1
  24. package/template/core/engine/react/object-entities.mjs +204 -0
  25. package/template/core/engine/react/pagination/allocator.mjs +48 -3
  26. package/template/core/engine/react/pagination.mjs +1 -1
  27. package/template/core/engine/react/pipeline/allocate.mjs +41 -72
  28. package/template/core/engine/react/pipeline/frame-measurement.mjs +6 -0
  29. package/template/core/engine/react/press-tree-inspection.mjs +172 -0
  30. package/template/core/engine/react/project-asset-endpoint.mjs +6 -24
  31. package/template/core/engine/react/source-edit-endpoint.d.mts +10 -0
  32. package/template/core/engine/react/source-edit-endpoint.mjs +75 -0
  33. package/template/core/engine/react/sources/mdx-resolver.mjs +13 -15
  34. package/template/core/engine/react/style-discovery.mjs +23 -8
  35. package/template/core/engine/runtime/config.d.mts +8 -0
  36. package/template/core/engine/runtime/config.mjs +57 -60
  37. package/template/core/engine/runtime/file-utils.mjs +9 -1
  38. package/template/core/engine/runtime/file-walk.mjs +22 -0
  39. package/template/core/engine/runtime/inspection.mjs +1 -20
  40. package/template/core/engine/runtime/page-geometry.mjs +131 -0
  41. package/template/core/engine/runtime/path-utils.mjs +20 -0
  42. package/template/core/engine/runtime/source-text-tools.d.mts +102 -0
  43. package/template/core/engine/runtime/source-text-tools.mjs +551 -16
  44. package/template/core/engine/runtime/source-workspace.mjs +16 -34
  45. package/template/core/engine/runtime/validation.mjs +19 -10
  46. package/template/core/openpress.config.mjs +3 -7
  47. package/template/core/package.json +3 -5
  48. package/template/core/src/main.tsx +2 -2
  49. package/template/core/src/openpress/app/OpenPressApp.tsx +296 -0
  50. package/template/core/src/openpress/{renderer.tsx → app/OpenPressRuntime.tsx} +20 -9
  51. package/template/core/src/openpress/app/WorkspaceGalleryPage.tsx +219 -0
  52. package/template/core/src/openpress/app/index.ts +2 -0
  53. package/template/core/src/openpress/core/Frame.tsx +26 -15
  54. package/template/core/src/openpress/core/FrameContext.tsx +10 -3
  55. package/template/core/src/openpress/core/MdxArea.tsx +11 -12
  56. package/template/core/src/openpress/core/Press.tsx +25 -4
  57. package/template/core/src/openpress/core/Workspace.tsx +36 -0
  58. package/template/core/src/openpress/core/cn.ts +4 -0
  59. package/template/core/src/openpress/core/index.tsx +11 -3
  60. package/template/core/src/openpress/core/primitives.tsx +74 -6
  61. package/template/core/src/openpress/core/types.ts +94 -41
  62. package/template/core/src/openpress/core/useSource.ts +1 -1
  63. package/template/core/src/openpress/{anchorMap.ts → document-model/anchorMapModel.ts} +1 -1
  64. package/template/core/src/openpress/{indexes.ts → document-model/documentIndexes.ts} +1 -1
  65. package/template/core/src/openpress/{types.ts → document-model/documentTypes.ts} +51 -0
  66. package/template/core/src/openpress/document-model/index.ts +7 -0
  67. package/template/core/src/openpress/document-model/objectEntityModel.ts +55 -0
  68. package/template/core/src/openpress/{projectIdentity.ts → document-model/projectIdentityModel.ts} +1 -1
  69. package/template/core/src/openpress/{reactDocumentMetadata.ts → document-model/reactDocumentMetadataModel.ts} +1 -1
  70. package/template/core/src/openpress/document-model/workspaceManifestModel.ts +57 -0
  71. package/template/core/src/openpress/manuscript/index.tsx +49 -7
  72. package/template/core/src/openpress/mdx/index.ts +15 -7
  73. package/template/core/src/openpress/reader/PageThumbnailsPanel.tsx +168 -0
  74. package/template/core/src/openpress/{publicPage.tsx → reader/PublicReaderPage.tsx} +31 -51
  75. package/template/core/src/openpress/{workbenchPanels.tsx → reader/ReaderNavigationPanel.tsx} +6 -5
  76. package/template/core/src/openpress/reader/index.ts +11 -0
  77. package/template/core/src/openpress/reader/pageViewportScaleModel.ts +73 -0
  78. package/template/core/src/openpress/reader/readerTypes.ts +4 -0
  79. package/template/core/src/openpress/reader/usePageViewportScale.ts +119 -0
  80. package/template/core/src/openpress/reader/usePanelState.ts +56 -0
  81. package/template/core/src/openpress/reader/useReaderHashSync.ts +61 -0
  82. package/template/core/src/openpress/reader/useReaderKeyboardNav.ts +48 -0
  83. package/template/core/src/openpress/reader/useReaderRuntime.ts +146 -0
  84. package/template/core/src/openpress/reader/useReaderScrollAnchor.ts +64 -0
  85. package/template/core/src/openpress/shared/Panel.tsx +77 -0
  86. package/template/core/src/openpress/shared/index.ts +4 -0
  87. package/template/core/src/openpress/shared/numberUtils.ts +3 -0
  88. package/template/core/src/openpress/{runtimeMode.ts → shared/runtimeMode.ts} +0 -11
  89. package/template/core/src/openpress/workbench/Workbench.tsx +506 -0
  90. package/template/core/src/openpress/workbench/actions/DeploymentControl.tsx +157 -0
  91. package/template/core/src/openpress/workbench/actions/ExportImageControl.tsx +96 -0
  92. package/template/core/src/openpress/workbench/actions/PageZoomControl.tsx +182 -0
  93. package/template/core/src/openpress/workbench/actions/SearchControl.tsx +345 -0
  94. package/template/core/src/openpress/workbench/actions/deploymentStatusModel.ts +112 -0
  95. package/template/core/src/openpress/workbench/actions/index.ts +6 -0
  96. package/template/core/src/openpress/workbench/actions/useDeploymentWorkbench.ts +136 -0
  97. package/template/core/src/openpress/workbench/dialog/WorkbenchDialog.tsx +72 -0
  98. package/template/core/src/openpress/workbench/dialog/index.ts +1 -0
  99. package/template/core/src/openpress/workbench/document/components/DocumentPanel.tsx +127 -0
  100. package/template/core/src/openpress/workbench/document/components/InlineSourceEditorLayer.tsx +207 -0
  101. package/template/core/src/openpress/workbench/document/components/ReaderStage.tsx +9 -0
  102. package/template/core/src/openpress/workbench/document/hooks/useDocumentWorkbenchModel.ts +34 -0
  103. package/template/core/src/openpress/workbench/document/hooks/useInlineDocumentEditor.ts +525 -0
  104. package/template/core/src/openpress/workbench/document/index.ts +10 -0
  105. package/template/core/src/openpress/workbench/index.ts +2 -0
  106. package/template/core/src/openpress/workbench/inspector/InlineInspectorLayer.tsx +459 -0
  107. package/template/core/src/openpress/workbench/inspector/index.ts +5 -0
  108. package/template/core/src/openpress/workbench/inspector/inlineCommentModel.ts +125 -0
  109. package/template/core/src/openpress/workbench/inspector/inspectorGeometryModel.ts +160 -0
  110. package/template/core/src/openpress/workbench/inspector/inspectorModel.ts +408 -0
  111. package/template/core/src/openpress/workbench/inspector/useInspectorComments.ts +254 -0
  112. package/template/core/src/openpress/workbench/mentions/MentionSuggestionList.tsx +41 -0
  113. package/template/core/src/openpress/workbench/mentions/index.ts +2 -0
  114. package/template/core/src/openpress/{composerMentions.ts → workbench/mentions/useComposerMentions.ts} +1 -4
  115. package/template/core/src/openpress/workbench/panels/Panel.tsx +1 -0
  116. package/template/core/src/openpress/workbench/panels/PendingCommentsPanel.tsx +80 -0
  117. package/template/core/src/openpress/workbench/panels/WorkbenchControlPanel.tsx +29 -0
  118. package/template/core/src/openpress/workbench/panels/index.ts +3 -0
  119. package/template/core/src/openpress/workbench/project/ProjectEntryPanel.tsx +525 -0
  120. package/template/core/src/openpress/workbench/project/ProjectPreviewDialog.tsx +35 -0
  121. package/template/core/src/openpress/workbench/project/index.ts +2 -0
  122. package/template/core/src/openpress/workbench/project/projectPreviewTypes.ts +11 -0
  123. package/template/core/src/openpress/workbench/shell/WorkbenchShell.tsx +167 -0
  124. package/template/core/src/openpress/workbench/shell/index.ts +1 -0
  125. package/template/core/src/openpress/workbench/workbenchFormatters.ts +120 -0
  126. package/template/core/src/openpress/workbench/workbenchTypes.ts +35 -0
  127. package/template/core/src/styles/openpress/print-route.css +0 -2
  128. package/template/core/src/styles/openpress/{project-workspace.css → project-preview-panel.css} +13 -407
  129. package/template/core/src/styles/openpress/public-viewer.css +25 -320
  130. package/template/core/src/styles/openpress/reader-runtime.css +252 -55
  131. package/template/core/src/styles/openpress/responsive.css +145 -270
  132. package/template/core/src/styles/openpress/workbench-panels.css +327 -178
  133. package/template/core/src/styles/openpress/workbench.css +986 -451
  134. package/template/core/src/styles/openpress/workspace-gallery.css +300 -0
  135. package/template/core/src/styles/openpress.css +2 -1
  136. package/template/core/tsconfig.json +1 -1
  137. package/template/core/vite.config.ts +50 -0
  138. package/template/core/engine/commands/init.mjs +0 -24
  139. package/template/core/engine/init.mjs +0 -90
  140. package/template/core/src/openpress/App.tsx +0 -127
  141. package/template/core/src/openpress/inspector.ts +0 -282
  142. package/template/core/src/openpress/projectWorkspace.tsx +0 -919
  143. package/template/core/src/openpress/readerRuntime.ts +0 -230
  144. package/template/core/src/openpress/workbench.tsx +0 -1265
  145. package/template/core/src/openpress/workbenchTypes.ts +0 -4
  146. package/template/packs/academic-paper/document/chapters/01-introduction/content/01-introduction.mdx +0 -35
  147. package/template/packs/academic-paper/document/chapters/02-methods/content/01-methods.mdx +0 -50
  148. package/template/packs/academic-paper/document/chapters/03-results-and-discussion/content/01-results.mdx +0 -47
  149. package/template/packs/academic-paper/document/chapters/04-acknowledgment/content/01-acknowledgment.mdx +0 -26
  150. package/template/packs/academic-paper/document/chapters/05-references/content/01-references.mdx +0 -32
  151. package/template/packs/academic-paper/document/components/ChapterOpenerVisual/index.tsx +0 -76
  152. package/template/packs/academic-paper/document/components/Page.tsx +0 -60
  153. package/template/packs/academic-paper/document/components/TokenSwatchGrid/index.tsx +0 -46
  154. package/template/packs/academic-paper/document/components/TokenSwatchGrid/style.css +0 -63
  155. package/template/packs/academic-paper/document/components/TypeSpecimen/index.tsx +0 -38
  156. package/template/packs/academic-paper/document/components/TypeSpecimen/style.css +0 -111
  157. package/template/packs/academic-paper/document/design.md +0 -279
  158. package/template/packs/academic-paper/document/index.tsx +0 -123
  159. package/template/packs/academic-paper/document/media/README.md +0 -13
  160. package/template/packs/academic-paper/document/media/figure-placeholder.svg +0 -9
  161. package/template/packs/academic-paper/document/openpress.config.mjs +0 -26
  162. package/template/packs/academic-paper/document/theme/README.md +0 -11
  163. package/template/packs/academic-paper/document/theme/base/page-contract.css +0 -522
  164. package/template/packs/academic-paper/document/theme/base/print.css +0 -93
  165. package/template/packs/academic-paper/document/theme/base/typography.css +0 -333
  166. package/template/packs/academic-paper/document/theme/fonts.css +0 -3
  167. package/template/packs/academic-paper/document/theme/page-surfaces/back-cover.css +0 -43
  168. package/template/packs/academic-paper/document/theme/page-surfaces/chapter-opener.css +0 -205
  169. package/template/packs/academic-paper/document/theme/page-surfaces/cover.css +0 -294
  170. package/template/packs/academic-paper/document/theme/page-surfaces/toc.css +0 -149
  171. package/template/packs/academic-paper/document/theme/patterns/_chart-frame.css +0 -49
  172. package/template/packs/academic-paper/document/theme/patterns/figure-grid.css +0 -68
  173. package/template/packs/academic-paper/document/theme/patterns/table-utilities.css +0 -66
  174. package/template/packs/academic-paper/document/theme/shell/reader-controls.css +0 -761
  175. package/template/packs/academic-paper/document/theme/tokens.css +0 -80
  176. package/template/packs/academic-paper/openpress.config.mjs +0 -5
  177. package/template/packs/claude-document/document/chapters/01-document-shape/content/01-document-shape.mdx +0 -51
  178. package/template/packs/claude-document/document/chapters/02-review-loop/content/01-review-loop.mdx +0 -31
  179. package/template/packs/claude-document/document/components/ChapterOpenerVisual.tsx +0 -96
  180. package/template/packs/claude-document/document/components/Page.tsx +0 -37
  181. package/template/packs/claude-document/document/design.md +0 -142
  182. package/template/packs/claude-document/document/index.tsx +0 -94
  183. package/template/packs/claude-document/document/media/README.md +0 -13
  184. package/template/packs/claude-document/document/openpress.config.mjs +0 -26
  185. package/template/packs/claude-document/document/theme/README.md +0 -15
  186. package/template/packs/claude-document/document/theme/base/page-contract.css +0 -525
  187. package/template/packs/claude-document/document/theme/base/print.css +0 -93
  188. package/template/packs/claude-document/document/theme/base/typography.css +0 -612
  189. package/template/packs/claude-document/document/theme/fonts.css +0 -4
  190. package/template/packs/claude-document/document/theme/page-surfaces/back-cover.css +0 -72
  191. package/template/packs/claude-document/document/theme/page-surfaces/chapter-opener.css +0 -236
  192. package/template/packs/claude-document/document/theme/page-surfaces/cover.css +0 -309
  193. package/template/packs/claude-document/document/theme/page-surfaces/toc.css +0 -225
  194. package/template/packs/claude-document/document/theme/patterns/_chart-frame.css +0 -53
  195. package/template/packs/claude-document/document/theme/patterns/figure-grid.css +0 -68
  196. package/template/packs/claude-document/document/theme/patterns/table-utilities.css +0 -66
  197. package/template/packs/claude-document/document/theme/shell/reader-controls.css +0 -789
  198. package/template/packs/claude-document/document/theme/tokens.css +0 -89
  199. package/template/packs/claude-document/openpress.config.mjs +0 -5
  200. package/template/packs/editorial-monograph/document/chapters/01-product-and-use-cases/content/01-product-and-use-cases.mdx +0 -31
  201. package/template/packs/editorial-monograph/document/chapters/02-workflow/content/01-workflow.mdx +0 -89
  202. package/template/packs/editorial-monograph/document/chapters/03-agent-skills-contributors/content/01-agent-skills-contributors.mdx +0 -51
  203. package/template/packs/editorial-monograph/document/chapters/04-validation-deploy/content/01-validation-deploy.mdx +0 -39
  204. package/template/packs/editorial-monograph/document/components/ChapterOpenerVisual/index.tsx +0 -76
  205. package/template/packs/editorial-monograph/document/components/Page.tsx +0 -37
  206. package/template/packs/editorial-monograph/document/components/TokenSwatchGrid/index.tsx +0 -46
  207. package/template/packs/editorial-monograph/document/components/TokenSwatchGrid/style.css +0 -63
  208. package/template/packs/editorial-monograph/document/components/TypeSpecimen/index.tsx +0 -38
  209. package/template/packs/editorial-monograph/document/components/TypeSpecimen/style.css +0 -111
  210. package/template/packs/editorial-monograph/document/design.md +0 -279
  211. package/template/packs/editorial-monograph/document/index.tsx +0 -97
  212. package/template/packs/editorial-monograph/document/media/README.md +0 -13
  213. package/template/packs/editorial-monograph/document/openpress.config.mjs +0 -26
  214. package/template/packs/editorial-monograph/document/theme/README.md +0 -11
  215. package/template/packs/editorial-monograph/document/theme/base/page-contract.css +0 -505
  216. package/template/packs/editorial-monograph/document/theme/base/print.css +0 -93
  217. package/template/packs/editorial-monograph/document/theme/base/typography.css +0 -336
  218. package/template/packs/editorial-monograph/document/theme/fonts.css +0 -3
  219. package/template/packs/editorial-monograph/document/theme/page-surfaces/back-cover.css +0 -43
  220. package/template/packs/editorial-monograph/document/theme/page-surfaces/chapter-opener.css +0 -205
  221. package/template/packs/editorial-monograph/document/theme/page-surfaces/cover.css +0 -147
  222. package/template/packs/editorial-monograph/document/theme/page-surfaces/toc.css +0 -149
  223. package/template/packs/editorial-monograph/document/theme/patterns/_chart-frame.css +0 -49
  224. package/template/packs/editorial-monograph/document/theme/patterns/figure-grid.css +0 -68
  225. package/template/packs/editorial-monograph/document/theme/patterns/table-utilities.css +0 -66
  226. package/template/packs/editorial-monograph/document/theme/shell/reader-controls.css +0 -761
  227. package/template/packs/editorial-monograph/document/theme/tokens.css +0 -80
  228. package/template/packs/editorial-monograph/openpress.config.mjs +0 -5
  229. /package/template/core/src/openpress/{readerPageRegistry.ts → reader/readerPageRegistry.ts} +0 -0
  230. /package/template/core/src/openpress/{pageRoute.ts → reader/readerPageRoute.ts} +0 -0
  231. /package/template/core/src/openpress/{readerScroll.ts → reader/readerScroll.ts} +0 -0
  232. /package/template/core/src/openpress/{readerState.ts → reader/readerStateModel.ts} +0 -0
  233. /package/template/core/src/openpress/{frameScheduler.ts → shared/frameScheduler.ts} +0 -0
  234. /package/template/core/src/openpress/{projectSources.ts → workbench/project/projectSourceModel.ts} +0 -0
@@ -1,4 +1,4 @@
1
- .openpress-project-workspace {
1
+ .openpress-project-preview-panel {
2
2
  width: 100%;
3
3
  min-width: 0;
4
4
  min-height: 100%;
@@ -8,7 +8,8 @@
8
8
  }
9
9
 
10
10
  .openpress-project-panel {
11
- display: block;
11
+ display: grid;
12
+ gap: 18px;
12
13
  min-height: 0;
13
14
  padding: 4px 18px 18px 22px;
14
15
  overflow: auto;
@@ -25,13 +26,8 @@
25
26
  display: grid;
26
27
  gap: 10px;
27
28
  min-width: 0;
28
- border-top: 1px solid rgb(255 255 255 / 8%);
29
- padding: 14px 0;
30
- }
31
-
32
- .openpress-project-tool-block:first-child {
33
29
  border-top: 0;
34
- padding-top: 0;
30
+ padding: 0;
35
31
  }
36
32
 
37
33
  .openpress-project-tool-header {
@@ -51,70 +47,6 @@
51
47
  text-transform: uppercase;
52
48
  }
53
49
 
54
- .openpress-project-upload-zone {
55
- display: grid;
56
- grid-template-columns: 26px minmax(0, 1fr);
57
- gap: 4px 10px;
58
- align-items: center;
59
- min-width: 0;
60
- border: 1px dashed rgb(255 255 255 / 14%);
61
- padding: 10px;
62
- color: rgb(170 176 183 / 72%);
63
- cursor: pointer;
64
- transition:
65
- border-color 160ms ease,
66
- background 160ms ease,
67
- color 160ms ease;
68
- }
69
-
70
- .openpress-project-upload-zone[data-drag-active="true"],
71
- .openpress-project-upload-zone:hover {
72
- border-color: rgb(223 106 47 / 62%);
73
- background: rgb(223 106 47 / 8%);
74
- color: rgb(244 241 235 / 92%);
75
- }
76
-
77
- .openpress-project-upload-zone input {
78
- position: absolute;
79
- width: 1px;
80
- height: 1px;
81
- opacity: 0;
82
- pointer-events: none;
83
- }
84
-
85
- .openpress-project-upload-zone svg {
86
- grid-row: span 2;
87
- width: 16px;
88
- height: 16px;
89
- color: rgb(223 106 47 / 82%);
90
- stroke-width: 1.8;
91
- }
92
-
93
- .openpress-project-upload-zone span {
94
- min-width: 0;
95
- color: rgb(238 238 234 / 88%);
96
- font-size: 12px;
97
- font-weight: 560;
98
- line-height: 1.2;
99
- }
100
-
101
- .openpress-project-upload-zone small,
102
- .openpress-project-tool-empty {
103
- margin: 0;
104
- color: rgb(150 156 163 / 58%);
105
- font-size: 10px;
106
- line-height: 1.35;
107
- overflow-wrap: anywhere;
108
- }
109
-
110
- .openpress-project-upload-zone[data-upload-status="failed"] small {
111
- color: #ff9c80;
112
- }
113
-
114
- .openpress-project-upload-zone[data-upload-status="done"] small {
115
- color: #9de7b0;
116
- }
117
-
118
50
  .openpress-project-asset-list,
119
51
  .openpress-project-component-mention-list {
120
52
  display: grid;
@@ -168,23 +100,13 @@
168
100
  min-width: 0;
169
101
  }
170
102
 
171
- .openpress-project-asset-body strong {
172
- min-width: 0;
173
- overflow: hidden;
174
- color: rgb(214 218 220 / 82%);
175
- font-size: 12px;
176
- font-weight: 520;
177
- line-height: 1.2;
178
- text-overflow: ellipsis;
179
- white-space: nowrap;
180
- }
181
-
103
+ .openpress-project-asset-body strong,
182
104
  .openpress-project-component-mention-list strong {
183
105
  min-width: 0;
184
106
  overflow: hidden;
185
- color: rgb(214 218 220 / 86%);
186
- font-size: 13.5px;
187
- font-weight: 560;
107
+ color: rgb(214 218 220 / 84%);
108
+ font-size: 12.5px;
109
+ font-weight: 540;
188
110
  line-height: 1.25;
189
111
  text-overflow: ellipsis;
190
112
  white-space: nowrap;
@@ -203,120 +125,16 @@
203
125
  stroke-width: 1.7;
204
126
  }
205
127
 
206
- .openpress-project-style-strip {
207
- display: flex;
208
- gap: 8px;
209
- min-width: 0;
210
- }
211
-
212
- .openpress-project-style-strip span {
213
- width: 22px;
214
- height: 22px;
215
- border: 1px solid rgb(255 255 255 / 14%);
216
- background: var(--openpress-project-swatch);
217
- }
218
-
219
- .openpress-project-preview-dialog {
220
- position: fixed;
221
- inset: 0;
222
- z-index: 1000;
223
- display: grid;
224
- place-items: center;
225
- padding: 28px;
226
- background: rgb(0 0 0 / 58%);
227
- }
228
-
229
- .openpress-project-preview-dialog__panel {
230
- display: grid;
231
- grid-template-rows: auto minmax(0, 1fr) auto;
232
- width: min(860px, calc(100vw - 56px));
233
- max-height: min(760px, calc(100vh - 56px));
234
- overflow: hidden;
235
- border: 1px solid rgb(255 255 255 / 12%);
236
- background: #151716;
237
- box-shadow: 0 28px 70px rgb(0 0 0 / 42%);
238
- color: rgb(242 242 238 / 94%);
239
- }
240
-
241
- .openpress-project-preview-dialog__panel header {
242
- display: grid;
243
- grid-template-columns: minmax(0, 1fr) auto 34px;
244
- gap: 16px;
245
- align-items: center;
246
- border-bottom: 1px solid rgb(255 255 255 / 9%);
247
- padding: 14px 16px;
248
- }
249
-
250
- .openpress-project-preview-dialog .openpress-project-preview-dialog__panel h2 {
251
- min-width: 0;
252
- margin: 0;
253
- overflow: hidden;
254
- color: rgb(242 242 238 / 94%);
255
- font-family: var(--openpress-font-body);
256
- font-size: 14px;
257
- font-weight: 560;
258
- line-height: 1.2;
259
- text-overflow: ellipsis;
260
- white-space: nowrap;
261
- }
262
-
263
- .openpress-project-preview-dialog__actions {
264
- display: flex;
265
- align-items: center;
266
- gap: 8px;
267
- }
268
-
269
- .openpress-project-preview-dialog__actions button {
270
- display: inline-flex;
271
- align-items: center;
272
- gap: 6px;
273
- min-height: 30px;
274
- border: 1px solid rgb(255 255 255 / 12%);
275
- border-radius: 999px;
276
- padding: 0 10px;
277
- background: rgb(255 255 255 / 3%);
278
- color: rgb(242 242 238 / 78%);
279
- cursor: pointer;
280
- font-size: 11px;
281
- font-weight: 560;
282
- line-height: 1;
283
- }
284
-
285
- .openpress-project-preview-dialog__actions button:hover {
286
- border-color: rgb(223 106 47 / 58%);
287
- color: rgb(255 255 255 / 92%);
288
- }
289
-
290
- .openpress-project-preview-dialog__actions svg {
291
- width: 13px;
292
- height: 13px;
293
- stroke-width: 1.8;
294
- }
295
-
296
- .openpress-project-preview-dialog__close {
297
- display: grid;
298
- width: 30px;
299
- height: 30px;
300
- place-items: center;
301
- border: 1px solid rgb(255 255 255 / 12%);
302
- border-radius: 999px;
303
- background: transparent;
304
- color: rgb(242 242 238 / 82%);
305
- cursor: pointer;
306
- font-size: 20px;
307
- line-height: 1;
308
- }
309
-
310
- .openpress-project-preview-dialog__close:hover {
311
- border-color: rgb(255 255 255 / 24%);
312
- color: white;
313
- }
128
+ /* Backdrop / panel / header / close styles now come from the shared
129
+ .openpress-workbench-dialog* class family. Only project-preview-specific
130
+ pieces (rename/delete pill actions, body preview surface, footer forms +
131
+ comment composer) live in this file. */
314
132
 
315
133
  .openpress-project-preview-dialog__body {
316
134
  min-width: 0;
317
135
  min-height: 0;
318
136
  overflow: auto;
319
- padding: 18px;
137
+ padding: 12px 24px 24px;
320
138
  }
321
139
 
322
140
  .openpress-project-preview-dialog__body[data-preview-kind="media"] {
@@ -347,218 +165,6 @@
347
165
  min-width: min-content;
348
166
  }
349
167
 
350
- .openpress-project-preview-dialog__footer {
351
- display: grid;
352
- gap: 12px;
353
- border-top: 1px solid rgb(255 255 255 / 9%);
354
- padding: 14px 16px 16px;
355
- background: #151716;
356
- }
357
-
358
- .openpress-project-asset-action-form {
359
- display: grid;
360
- grid-template-columns: minmax(0, 1fr) auto;
361
- gap: 10px;
362
- align-items: end;
363
- }
364
-
365
- .openpress-project-asset-action-form label {
366
- display: grid;
367
- gap: 6px;
368
- min-width: 0;
369
- }
370
-
371
- .openpress-project-asset-action-form label span,
372
- .openpress-project-preview-comment__shortcuts,
373
- .openpress-project-preview-comment__bottom {
374
- color: rgb(170 176 183 / 70%);
375
- font-size: 11px;
376
- line-height: 1.2;
377
- }
378
-
379
- .openpress-project-asset-action-form input,
380
- .openpress-project-preview-comment textarea,
381
- .openpress-project-preview-comment select {
382
- width: 100%;
383
- min-width: 0;
384
- border: 1px solid rgb(255 255 255 / 12%);
385
- border-radius: 0;
386
- background: rgb(255 255 255 / 5%);
387
- color: rgb(244 244 240 / 92%);
388
- font: inherit;
389
- }
390
-
391
- .openpress-project-asset-action-form input {
392
- height: 34px;
393
- padding: 0 10px;
394
- font-size: 12px;
395
- }
396
-
397
- .openpress-project-asset-action-form > div,
398
- .openpress-project-preview-comment__bottom {
399
- display: flex;
400
- align-items: center;
401
- justify-content: flex-end;
402
- gap: 8px;
403
- }
404
-
405
- .openpress-project-asset-action-form button,
406
- .openpress-project-preview-comment button {
407
- display: inline-flex;
408
- align-items: center;
409
- justify-content: center;
410
- gap: 6px;
411
- min-height: 32px;
412
- border: 1px solid rgb(255 255 255 / 12%);
413
- border-radius: 999px;
414
- padding: 0 12px;
415
- background: transparent;
416
- color: rgb(242 242 238 / 82%);
417
- cursor: pointer;
418
- font-size: 11px;
419
- font-weight: 560;
420
- line-height: 1;
421
- }
422
-
423
- .openpress-project-asset-action-form button:hover:not(:disabled),
424
- .openpress-project-preview-comment button:hover:not(:disabled) {
425
- border-color: rgb(223 106 47 / 58%);
426
- color: rgb(255 255 255 / 94%);
427
- }
428
-
429
- .openpress-project-asset-action-form button:disabled,
430
- .openpress-project-preview-comment button:disabled {
431
- cursor: default;
432
- opacity: 0.48;
433
- }
434
-
435
- .openpress-project-asset-action-form svg {
436
- width: 13px;
437
- height: 13px;
438
- }
439
-
440
- .openpress-project-asset-action-form--delete {
441
- grid-template-columns: minmax(0, 1fr) auto;
442
- align-items: center;
443
- }
444
-
445
- .openpress-project-asset-action-form--delete p,
446
- .openpress-project-asset-action-message {
447
- margin: 0;
448
- color: rgb(190 196 202 / 72%);
449
- font-size: 11px;
450
- line-height: 1.45;
451
- }
452
-
453
- .openpress-project-asset-action-message[data-status="done"] {
454
- color: #9de7b0;
455
- }
456
-
457
- .openpress-project-asset-action-message[data-status="failed"] {
458
- color: #ff9c80;
459
- }
460
-
461
- .openpress-project-preview-comment {
462
- display: grid;
463
- gap: 9px;
464
- border-top: 1px solid rgb(255 255 255 / 7%);
465
- padding-top: 12px;
466
- }
467
-
468
- .openpress-project-preview-comment__shortcuts {
469
- display: flex;
470
- flex-wrap: wrap;
471
- gap: 8px;
472
- }
473
-
474
- .openpress-project-preview-comment__shortcuts button {
475
- min-height: 28px;
476
- padding: 0 10px;
477
- }
478
-
479
- .openpress-project-preview-comment__composer {
480
- display: grid;
481
- gap: 8px;
482
- min-width: 0;
483
- }
484
-
485
- .openpress-project-preview-comment textarea {
486
- min-height: 74px;
487
- max-height: 160px;
488
- resize: vertical;
489
- padding: 10px;
490
- font-size: 12px;
491
- line-height: 1.45;
492
- }
493
-
494
- .openpress-project-preview-comment textarea::placeholder {
495
- color: rgb(170 176 183 / 42%);
496
- }
497
-
498
- .openpress-project-preview-comment__suggestions {
499
- display: grid;
500
- gap: 4px;
501
- overflow: hidden;
502
- border: 1px solid rgb(223 106 47 / 32%);
503
- border-radius: 12px;
504
- padding: 6px;
505
- background: rgb(36 36 34 / 96%);
506
- }
507
-
508
- .openpress-project-preview-comment__suggestions button {
509
- display: flex;
510
- align-items: baseline;
511
- justify-content: space-between;
512
- gap: 12px;
513
- min-width: 0;
514
- min-height: 0;
515
- border: 0;
516
- border-radius: 8px;
517
- padding: 8px 10px;
518
- background: transparent;
519
- color: rgb(244 241 235 / 90%);
520
- text-align: left;
521
- }
522
-
523
- .openpress-project-preview-comment__suggestions button:hover,
524
- .openpress-project-preview-comment__suggestions button:focus-visible,
525
- .openpress-project-preview-comment__suggestions button[data-highlighted="true"] {
526
- background: rgb(223 106 47 / 18%);
527
- outline: 0;
528
- }
529
-
530
- .openpress-project-preview-comment__suggestions span {
531
- min-width: 0;
532
- overflow: hidden;
533
- font-size: 12px;
534
- font-weight: 600;
535
- line-height: 1.2;
536
- text-overflow: ellipsis;
537
- white-space: nowrap;
538
- }
539
-
540
- .openpress-project-preview-comment__suggestions small {
541
- flex: 0 0 auto;
542
- color: rgb(218 161 123 / 78%);
543
- font-size: 10px;
544
- line-height: 1.2;
545
- }
546
-
547
- .openpress-project-preview-comment select {
548
- width: auto;
549
- height: 30px;
550
- padding: 0 28px 0 9px;
551
- color: rgb(190 196 202 / 82%);
552
- font-size: 11px;
553
- }
554
-
555
- .openpress-project-preview-comment__bottom span[data-status="done"] {
556
- color: #9de7b0;
557
- }
558
-
559
- .openpress-project-preview-comment__bottom span[data-status="failed"] {
560
- color: #ff9c80;
561
- }
562
168
 
563
169
  .openpress-project-markdown-header dt {
564
170
  color: rgb(175 181 188 / 64%);