@open-press/cli 0.3.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 (178) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/cli.js +365 -0
  4. package/package.json +57 -0
  5. package/template/core/.turbo/turbo-test.log +341 -0
  6. package/template/core/CHANGELOG.md +11 -0
  7. package/template/core/README.md +36 -0
  8. package/template/core/engine/chrome-pdf.d.mts +34 -0
  9. package/template/core/engine/chrome-pdf.mjs +344 -0
  10. package/template/core/engine/cli.mjs +93 -0
  11. package/template/core/engine/commands/_shared.mjs +170 -0
  12. package/template/core/engine/commands/deploy.mjs +31 -0
  13. package/template/core/engine/commands/dev.mjs +26 -0
  14. package/template/core/engine/commands/export.mjs +8 -0
  15. package/template/core/engine/commands/init.mjs +24 -0
  16. package/template/core/engine/commands/inspect.mjs +35 -0
  17. package/template/core/engine/commands/migrate-to-react.mjs +27 -0
  18. package/template/core/engine/commands/pdf.mjs +26 -0
  19. package/template/core/engine/commands/preview.mjs +26 -0
  20. package/template/core/engine/commands/render.mjs +17 -0
  21. package/template/core/engine/commands/replace.mjs +41 -0
  22. package/template/core/engine/commands/search.mjs +33 -0
  23. package/template/core/engine/commands/typecheck.mjs +5 -0
  24. package/template/core/engine/commands/validate.mjs +17 -0
  25. package/template/core/engine/config.d.mts +40 -0
  26. package/template/core/engine/config.mjs +160 -0
  27. package/template/core/engine/deploy-sync.mjs +15 -0
  28. package/template/core/engine/document-export.mjs +15 -0
  29. package/template/core/engine/file-utils.mjs +106 -0
  30. package/template/core/engine/fonts.mjs +62 -0
  31. package/template/core/engine/init.mjs +90 -0
  32. package/template/core/engine/inspection.mjs +348 -0
  33. package/template/core/engine/issue-report.mjs +44 -0
  34. package/template/core/engine/katex-assets.mjs +45 -0
  35. package/template/core/engine/page-block.mjs +30 -0
  36. package/template/core/engine/page-renderer.mjs +217 -0
  37. package/template/core/engine/pdf-media.mjs +45 -0
  38. package/template/core/engine/public-assets.mjs +19 -0
  39. package/template/core/engine/react/chapter-css.mjs +53 -0
  40. package/template/core/engine/react/comment-endpoint.d.mts +11 -0
  41. package/template/core/engine/react/comment-endpoint.mjs +128 -0
  42. package/template/core/engine/react/comment-marker.mjs +306 -0
  43. package/template/core/engine/react/document-entry.mjs +253 -0
  44. package/template/core/engine/react/document-export.mjs +392 -0
  45. package/template/core/engine/react/mdx-compile.mjs +295 -0
  46. package/template/core/engine/react/measurement-css.mjs +44 -0
  47. package/template/core/engine/react/migrate-to-react.mjs +355 -0
  48. package/template/core/engine/react/pagination-constants.mjs +3 -0
  49. package/template/core/engine/react/pagination.mjs +121 -0
  50. package/template/core/engine/react/project-asset-endpoint.d.mts +10 -0
  51. package/template/core/engine/react/project-asset-endpoint.mjs +379 -0
  52. package/template/core/engine/react/workspace-discovery.mjs +156 -0
  53. package/template/core/engine/source-text-tools.mjs +280 -0
  54. package/template/core/engine/source-workspace.mjs +76 -0
  55. package/template/core/engine/static-server.mjs +493 -0
  56. package/template/core/engine/validation.mjs +172 -0
  57. package/template/core/index.html +13 -0
  58. package/template/core/openpress.config.mjs +12 -0
  59. package/template/core/package.json +86 -0
  60. package/template/core/src/main.tsx +16 -0
  61. package/template/core/src/openpress/App.tsx +127 -0
  62. package/template/core/src/openpress/composerMentions.ts +188 -0
  63. package/template/core/src/openpress/core/basePages.tsx +87 -0
  64. package/template/core/src/openpress/core/index.tsx +20 -0
  65. package/template/core/src/openpress/core/types.ts +71 -0
  66. package/template/core/src/openpress/frameScheduler.ts +32 -0
  67. package/template/core/src/openpress/indexes.ts +329 -0
  68. package/template/core/src/openpress/inspector.ts +282 -0
  69. package/template/core/src/openpress/pageRoute.ts +21 -0
  70. package/template/core/src/openpress/pagination.ts +845 -0
  71. package/template/core/src/openpress/projectIdentity.ts +15 -0
  72. package/template/core/src/openpress/projectSources.ts +24 -0
  73. package/template/core/src/openpress/projectWorkspace.tsx +919 -0
  74. package/template/core/src/openpress/publicPage.tsx +469 -0
  75. package/template/core/src/openpress/reactDocumentMetadata.ts +41 -0
  76. package/template/core/src/openpress/readerPageRegistry.ts +41 -0
  77. package/template/core/src/openpress/readerRuntime.ts +230 -0
  78. package/template/core/src/openpress/readerScroll.ts +92 -0
  79. package/template/core/src/openpress/readerState.ts +15 -0
  80. package/template/core/src/openpress/renderer.tsx +91 -0
  81. package/template/core/src/openpress/runtimeMode.ts +22 -0
  82. package/template/core/src/openpress/types.ts +112 -0
  83. package/template/core/src/openpress/workbench.tsx +1299 -0
  84. package/template/core/src/openpress/workbenchPanels.tsx +122 -0
  85. package/template/core/src/openpress/workbenchTypes.ts +4 -0
  86. package/template/core/src/styles/openpress/app-shell.css +251 -0
  87. package/template/core/src/styles/openpress/media-workspace.css +230 -0
  88. package/template/core/src/styles/openpress/print-route.css +186 -0
  89. package/template/core/src/styles/openpress/project-workspace.css +1318 -0
  90. package/template/core/src/styles/openpress/public-viewer.css +983 -0
  91. package/template/core/src/styles/openpress/reader-runtime.css +792 -0
  92. package/template/core/src/styles/openpress/responsive.css +384 -0
  93. package/template/core/src/styles/openpress/workbench-panels.css +558 -0
  94. package/template/core/src/styles/openpress/workbench.css +720 -0
  95. package/template/core/src/styles/openpress.css +14 -0
  96. package/template/core/src/vite-env.d.ts +9 -0
  97. package/template/core/tsconfig.json +37 -0
  98. package/template/core/vite.config.ts +512 -0
  99. package/template/skills/chinese-ai-writing-polish/SKILL.md +195 -0
  100. package/template/skills/claude-document/SKILL.md +66 -0
  101. package/template/skills/claude-document/starter/document/chapters/01-document-shape/chapter.tsx +30 -0
  102. package/template/skills/claude-document/starter/document/chapters/01-document-shape/content/01-document-shape.mdx +51 -0
  103. package/template/skills/claude-document/starter/document/chapters/02-review-loop/chapter.tsx +30 -0
  104. package/template/skills/claude-document/starter/document/chapters/02-review-loop/content/01-review-loop.mdx +31 -0
  105. package/template/skills/claude-document/starter/document/components/ChapterOpenerVisual.tsx +96 -0
  106. package/template/skills/claude-document/starter/document/components/Page.tsx +27 -0
  107. package/template/skills/claude-document/starter/document/design.md +142 -0
  108. package/template/skills/claude-document/starter/document/index.tsx +89 -0
  109. package/template/skills/claude-document/starter/document/media/README.md +13 -0
  110. package/template/skills/claude-document/starter/document/openpress.config.mjs +26 -0
  111. package/template/skills/claude-document/starter/document/theme/README.md +15 -0
  112. package/template/skills/claude-document/starter/document/theme/base/page-contract.css +525 -0
  113. package/template/skills/claude-document/starter/document/theme/base/print.css +93 -0
  114. package/template/skills/claude-document/starter/document/theme/base/typography.css +612 -0
  115. package/template/skills/claude-document/starter/document/theme/fonts.css +4 -0
  116. package/template/skills/claude-document/starter/document/theme/page-surfaces/back-cover.css +72 -0
  117. package/template/skills/claude-document/starter/document/theme/page-surfaces/chapter-opener.css +236 -0
  118. package/template/skills/claude-document/starter/document/theme/page-surfaces/cover.css +309 -0
  119. package/template/skills/claude-document/starter/document/theme/page-surfaces/toc.css +213 -0
  120. package/template/skills/claude-document/starter/document/theme/patterns/_chart-frame.css +53 -0
  121. package/template/skills/claude-document/starter/document/theme/patterns/figure-grid.css +68 -0
  122. package/template/skills/claude-document/starter/document/theme/patterns/table-utilities.css +66 -0
  123. package/template/skills/claude-document/starter/document/theme/shell/reader-controls.css +789 -0
  124. package/template/skills/claude-document/starter/document/theme/tokens.css +89 -0
  125. package/template/skills/claude-document/starter/openpress.config.mjs +5 -0
  126. package/template/skills/editorial-monograph/SKILL.md +73 -0
  127. package/template/skills/editorial-monograph/starter/document/chapters/01-product-and-use-cases/content/01-product-and-use-cases.mdx +31 -0
  128. package/template/skills/editorial-monograph/starter/document/chapters/02-workflow/content/01-workflow.mdx +89 -0
  129. package/template/skills/editorial-monograph/starter/document/chapters/03-agent-skills-contributors/content/01-agent-skills-contributors.mdx +52 -0
  130. package/template/skills/editorial-monograph/starter/document/chapters/04-validation-deploy/content/01-validation-deploy.mdx +39 -0
  131. package/template/skills/editorial-monograph/starter/document/components/ChapterOpenerVisual/index.tsx +76 -0
  132. package/template/skills/editorial-monograph/starter/document/components/Page.tsx +27 -0
  133. package/template/skills/editorial-monograph/starter/document/components/TokenSwatchGrid/index.tsx +46 -0
  134. package/template/skills/editorial-monograph/starter/document/components/TokenSwatchGrid/style.css +63 -0
  135. package/template/skills/editorial-monograph/starter/document/components/TypeSpecimen/index.tsx +38 -0
  136. package/template/skills/editorial-monograph/starter/document/components/TypeSpecimen/style.css +111 -0
  137. package/template/skills/editorial-monograph/starter/document/design.md +279 -0
  138. package/template/skills/editorial-monograph/starter/document/index.tsx +73 -0
  139. package/template/skills/editorial-monograph/starter/document/media/README.md +13 -0
  140. package/template/skills/editorial-monograph/starter/document/openpress.config.mjs +26 -0
  141. package/template/skills/editorial-monograph/starter/document/theme/README.md +11 -0
  142. package/template/skills/editorial-monograph/starter/document/theme/base/page-contract.css +505 -0
  143. package/template/skills/editorial-monograph/starter/document/theme/base/print.css +93 -0
  144. package/template/skills/editorial-monograph/starter/document/theme/base/typography.css +336 -0
  145. package/template/skills/editorial-monograph/starter/document/theme/fonts.css +3 -0
  146. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/back-cover.css +43 -0
  147. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/chapter-opener.css +205 -0
  148. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/cover.css +147 -0
  149. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/toc.css +139 -0
  150. package/template/skills/editorial-monograph/starter/document/theme/patterns/_chart-frame.css +49 -0
  151. package/template/skills/editorial-monograph/starter/document/theme/patterns/figure-grid.css +68 -0
  152. package/template/skills/editorial-monograph/starter/document/theme/patterns/table-utilities.css +66 -0
  153. package/template/skills/editorial-monograph/starter/document/theme/shell/reader-controls.css +761 -0
  154. package/template/skills/editorial-monograph/starter/document/theme/tokens.css +80 -0
  155. package/template/skills/editorial-monograph/starter/openpress.config.mjs +5 -0
  156. package/template/skills/openpress/SKILL.md +114 -0
  157. package/template/skills/openpress/references/cli-commands.md +31 -0
  158. package/template/skills/openpress/references/local-review.md +43 -0
  159. package/template/skills/openpress-deploy/SKILL.md +69 -0
  160. package/template/skills/openpress-deploy/references/cloudflare-pages.md +51 -0
  161. package/template/skills/openpress-design/SKILL.md +51 -0
  162. package/template/skills/openpress-design/references/pdf-safe-css.md +29 -0
  163. package/template/skills/openpress-design/references/responsive-fixed-layout.md +48 -0
  164. package/template/skills/openpress-design/references/theme-and-components.md +77 -0
  165. package/template/skills/openpress-diagram-drawing/SKILL.md +44 -0
  166. package/template/skills/openpress-diagram-drawing/references/diagram-patterns.md +93 -0
  167. package/template/skills/openpress-document-hierarchy/SKILL.md +81 -0
  168. package/template/skills/openpress-document-hierarchy/agents/openai.yaml +4 -0
  169. package/template/skills/openpress-document-hierarchy/references/data-structures-outline.md +115 -0
  170. package/template/skills/openpress-init/SKILL.md +84 -0
  171. package/template/skills/openpress-style-pack-contributor/SKILL.md +62 -0
  172. package/template/skills/openpress-style-pack-contributor/references/starter-contract.md +49 -0
  173. package/template/skills/openpress-update/SKILL.md +88 -0
  174. package/template/skills/openpress-writing/SKILL.md +68 -0
  175. package/template/skills/openpress-writing/references/source-and-writing-rules.md +120 -0
  176. package/template/skills/teaching-notes-writing/SKILL.md +54 -0
  177. package/template/skills/teaching-notes-writing/references/programming.md +65 -0
  178. package/template/skills/teaching-notes-writing/references/teaching-patterns.md +60 -0
@@ -0,0 +1,720 @@
1
+ .openpress-workbench {
2
+ display: block;
3
+ min-height: 100vh;
4
+ background: #141414;
5
+ color: var(--openpress-text);
6
+ }
7
+
8
+ .openpress-workbench[data-panel-open="false"] {
9
+ grid-template-columns: 0 minmax(0, 1fr);
10
+ }
11
+
12
+ .openpress-public-shell {
13
+ position: fixed;
14
+ inset: 0;
15
+ width: 100%;
16
+ height: 100dvh;
17
+ min-height: 100dvh;
18
+ overflow: hidden;
19
+ overscroll-behavior: none;
20
+ }
21
+
22
+ .openpress-panel-toggle {
23
+ position: fixed;
24
+ top: max(14px, env(safe-area-inset-top));
25
+ left: max(14px, env(safe-area-inset-left));
26
+ z-index: 35;
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ border: 1px solid rgb(255 255 255 / 14%);
31
+ border-radius: 999px;
32
+ padding: 9px 12px;
33
+ background: rgb(20 20 20 / 86%);
34
+ color: #f2f2f0;
35
+ font: inherit;
36
+ font-size: 13px;
37
+ line-height: 1;
38
+ cursor: pointer;
39
+ backdrop-filter: blur(14px);
40
+ box-shadow: 0 10px 26px rgb(0 0 0 / 28%);
41
+ }
42
+
43
+ .openpress-panel-toggle:hover {
44
+ border-color: rgb(255 255 255 / 24%);
45
+ background: rgb(28 28 28 / 92%);
46
+ }
47
+
48
+ .openpress-panel-toggle span[aria-hidden="true"] {
49
+ width: 14px;
50
+ color: var(--openpress-accent);
51
+ font-size: 16px;
52
+ line-height: 0.8;
53
+ text-align: center;
54
+ }
55
+
56
+ .openpress-panel-scrim {
57
+ display: none;
58
+ }
59
+
60
+ .openpress-workbench__sidebar {
61
+ position: sticky;
62
+ top: 0;
63
+ z-index: 25;
64
+ height: 100vh;
65
+ border-right: 1px solid rgb(255 255 255 / 10%);
66
+ padding: 72px 18px 24px;
67
+ overflow: auto;
68
+ background: #171717;
69
+ color: #d8dadd;
70
+ scrollbar-color: var(--openpress-scrollbar-thumb) var(--openpress-scrollbar-track-sidebar);
71
+ scrollbar-gutter: stable;
72
+ scrollbar-width: thin;
73
+ transition: opacity 160ms ease, transform 160ms ease;
74
+ }
75
+
76
+ .openpress-workbench[data-panel-open="false"] .openpress-workbench__sidebar {
77
+ transform: translateX(-100%);
78
+ opacity: 0;
79
+ pointer-events: none;
80
+ }
81
+
82
+ .openpress-workbench__sidebar::-webkit-scrollbar {
83
+ width: 8px;
84
+ }
85
+
86
+ .openpress-workbench__sidebar::-webkit-scrollbar-track {
87
+ background: var(--openpress-scrollbar-track-sidebar);
88
+ }
89
+
90
+ .openpress-workbench__sidebar::-webkit-scrollbar-thumb {
91
+ border-color: var(--openpress-scrollbar-track-sidebar);
92
+ }
93
+
94
+ .openpress-workbench__brand {
95
+ display: flex;
96
+ align-items: baseline;
97
+ justify-content: space-between;
98
+ gap: 12px;
99
+ margin-bottom: 28px;
100
+ }
101
+
102
+ .openpress-workbench__brand span {
103
+ color: var(--openpress-accent);
104
+ font-size: 13px;
105
+ }
106
+
107
+ .openpress-workbench__brand strong {
108
+ font-size: 20px;
109
+ font-weight: 500;
110
+ }
111
+
112
+ .openpress-workbench__meta {
113
+ border-top: 1px solid rgb(255 255 255 / 10%);
114
+ border-bottom: 1px solid rgb(255 255 255 / 10%);
115
+ padding: 16px 0;
116
+ }
117
+
118
+ .openpress-workbench__meta p {
119
+ margin: 0;
120
+ color: #f4f4f2;
121
+ font-size: 15px;
122
+ line-height: 1.5;
123
+ }
124
+
125
+ .openpress-workbench__meta small {
126
+ display: block;
127
+ margin-top: 8px;
128
+ color: #8e949b;
129
+ font-size: 12px;
130
+ }
131
+
132
+ .openpress-source-list {
133
+ display: flex;
134
+ flex-direction: column;
135
+ gap: 8px;
136
+ margin-top: 18px;
137
+ }
138
+
139
+ .openpress-source-list__item {
140
+ display: grid;
141
+ grid-template-columns: 32px minmax(0, 1fr);
142
+ gap: 8px;
143
+ border: 1px solid transparent;
144
+ padding: 10px 8px;
145
+ color: inherit;
146
+ text-decoration: none;
147
+ }
148
+
149
+ .openpress-source-list__item:hover {
150
+ border-color: rgb(255 255 255 / 12%);
151
+ background: rgb(255 255 255 / 4%);
152
+ }
153
+
154
+ .openpress-source-list__item span {
155
+ color: #777d84;
156
+ font-size: 12px;
157
+ line-height: 1.5;
158
+ }
159
+
160
+ .openpress-source-list__item strong {
161
+ overflow: hidden;
162
+ color: #d8dadd;
163
+ font-size: 13px;
164
+ font-weight: 400;
165
+ line-height: 1.45;
166
+ text-overflow: ellipsis;
167
+ white-space: nowrap;
168
+ }
169
+
170
+ .openpress-source-list__item small {
171
+ grid-column: 2;
172
+ overflow: hidden;
173
+ color: #7f858c;
174
+ font-size: 11px;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
177
+ }
178
+
179
+ .openpress-workbench__stage {
180
+ grid-area: main;
181
+ min-width: 0;
182
+ container-type: inline-size;
183
+ padding: 0;
184
+ overflow: hidden;
185
+ background: #141414;
186
+ scrollbar-width: none;
187
+ }
188
+
189
+ .openpress-workbench__stage::-webkit-scrollbar {
190
+ width: 0;
191
+ height: 0;
192
+ display: none;
193
+ }
194
+
195
+ .openpress-reader-app,
196
+ .openpress-reader-app.is-closed-left,
197
+ .openpress-reader-app.is-closed-right,
198
+ .openpress-reader-app.is-closed-left.is-closed-right {
199
+ width: 100%;
200
+ height: 100vh;
201
+ min-height: 100vh;
202
+ grid-template-rows: 58px minmax(0, 1fr);
203
+ grid-template-columns: 56px clamp(240px, 20vw, 320px) minmax(0, 1fr) clamp(300px, 22vw, 360px);
204
+ grid-template-areas:
205
+ "nav nav nav nav"
206
+ "rail left main right";
207
+ overflow: hidden;
208
+ background: #141414;
209
+ }
210
+
211
+ .openpress-reader-app.is-closed-left {
212
+ grid-template-columns: 56px 0 minmax(0, 1fr) clamp(300px, 22vw, 360px);
213
+ }
214
+
215
+ .openpress-reader-app.is-closed-right {
216
+ grid-template-columns: 56px clamp(240px, 20vw, 320px) minmax(0, 1fr) 0;
217
+ }
218
+
219
+ .openpress-reader-app.is-closed-left.is-closed-right {
220
+ grid-template-columns: 56px 0 minmax(0, 1fr) 0;
221
+ }
222
+
223
+ .openpress-reader-app[data-active-workspace="document"],
224
+ .openpress-reader-app.is-closed-left[data-active-workspace="document"] {
225
+ grid-template-columns: 56px 0 minmax(0, 1fr) clamp(300px, 22vw, 360px);
226
+ }
227
+
228
+ .openpress-reader-app.is-closed-right[data-active-workspace="document"],
229
+ .openpress-reader-app.is-closed-left.is-closed-right[data-active-workspace="document"] {
230
+ grid-template-columns: 56px 0 minmax(0, 1fr) 0;
231
+ }
232
+
233
+ .openpress-workspace-navbar {
234
+ z-index: 30;
235
+ min-width: 0;
236
+ grid-template-columns: minmax(0, 1fr) auto;
237
+ border-bottom: 1px solid rgb(255 255 255 / 9%);
238
+ background: rgb(20 20 20 / 92%);
239
+ backdrop-filter: blur(18px);
240
+ }
241
+
242
+ .openpress-workspace-navbar__left,
243
+ .openpress-workspace-navbar__right {
244
+ display: flex;
245
+ align-items: center;
246
+ gap: 8px;
247
+ min-width: 0;
248
+ }
249
+
250
+ .openpress-workspace-navbar__left {
251
+ justify-self: start;
252
+ }
253
+
254
+ .openpress-workspace-navbar__right {
255
+ justify-self: end;
256
+ }
257
+
258
+ .openpress-workspace-brand {
259
+ display: flex;
260
+ align-items: baseline;
261
+ gap: 12px;
262
+ min-width: 0;
263
+ }
264
+
265
+ .openpress-workspace-brand__logo {
266
+ flex: 0 0 auto;
267
+ color: var(--openpress-accent);
268
+ font-size: 13px;
269
+ font-weight: 500;
270
+ }
271
+
272
+ .openpress-workspace-brand strong {
273
+ overflow: hidden;
274
+ max-width: min(42vw, 520px);
275
+ color: #f2f2f0;
276
+ font-size: 14px;
277
+ font-weight: 500;
278
+ line-height: 1.3;
279
+ text-overflow: ellipsis;
280
+ white-space: nowrap;
281
+ }
282
+
283
+ .openpress-icon-button,
284
+ .openpress-navbar-button {
285
+ border: 1px solid rgb(255 255 255 / 12%);
286
+ background: rgb(255 255 255 / 3%);
287
+ color: #e7e7e4;
288
+ font: inherit;
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-icon-button {
298
+ display: inline-flex;
299
+ width: 32px;
300
+ height: 32px;
301
+ align-items: center;
302
+ justify-content: center;
303
+ padding: 0;
304
+ color: #b7babd;
305
+ }
306
+
307
+ .openpress-icon-button:hover,
308
+ .openpress-navbar-button:hover {
309
+ border-color: rgb(255 255 255 / 22%);
310
+ background: rgb(255 255 255 / 8%);
311
+ color: #fff;
312
+ }
313
+
314
+ .openpress-icon-button:active,
315
+ .openpress-navbar-button:active {
316
+ transform: translateY(1px);
317
+ }
318
+
319
+ .openpress-icon-button svg {
320
+ width: 15px;
321
+ height: 15px;
322
+ color: var(--openpress-accent);
323
+ }
324
+
325
+ .openpress-navbar-button {
326
+ display: inline-flex;
327
+ height: 32px;
328
+ min-width: 74px;
329
+ align-items: center;
330
+ justify-content: center;
331
+ gap: 6px;
332
+ padding: 0 13px;
333
+ font-size: 11px;
334
+ font-weight: 500;
335
+ line-height: 1;
336
+ white-space: nowrap;
337
+ }
338
+
339
+ .openpress-navbar-button svg {
340
+ width: 13px;
341
+ height: 13px;
342
+ color: currentColor;
343
+ }
344
+
345
+ .openpress-navbar-button--ghost {
346
+ color: #f0f1ee;
347
+ border-color: rgb(240 182 76 / 32%);
348
+ background: rgb(240 182 76 / 8%);
349
+ }
350
+
351
+ .openpress-navbar-button--ghost:hover {
352
+ border-color: rgb(240 182 76 / 52%);
353
+ background: rgb(240 182 76 / 13%);
354
+ }
355
+
356
+ .openpress-navbar-button:disabled {
357
+ cursor: progress;
358
+ color: #a7adb2;
359
+ border-color: rgb(240 182 76 / 24%);
360
+ background: rgb(240 182 76 / 6%);
361
+ }
362
+
363
+ .openpress-publication-control {
364
+ position: relative;
365
+ display: inline-flex;
366
+ align-items: center;
367
+ }
368
+
369
+ .openpress-publication-trigger {
370
+ display: inline-flex;
371
+ height: 32px;
372
+ align-items: center;
373
+ justify-content: center;
374
+ gap: 7px;
375
+ border: 1px solid rgb(255 255 255 / 12%);
376
+ padding: 0 10px;
377
+ background: rgb(255 255 255 / 3%);
378
+ color: #e7e7e4;
379
+ font: inherit;
380
+ font-size: 11px;
381
+ font-weight: 500;
382
+ line-height: 1;
383
+ white-space: nowrap;
384
+ cursor: pointer;
385
+ transition:
386
+ border-color 160ms ease,
387
+ background 160ms ease,
388
+ color 160ms ease;
389
+ }
390
+
391
+ .openpress-publication-trigger:hover,
392
+ .openpress-publication-trigger[aria-expanded="true"] {
393
+ border-color: rgb(255 255 255 / 22%);
394
+ background: rgb(255 255 255 / 8%);
395
+ color: #fff;
396
+ }
397
+
398
+ .openpress-publication-trigger svg {
399
+ width: 13px;
400
+ height: 13px;
401
+ color: #8f969d;
402
+ }
403
+
404
+ .openpress-publication-dot {
405
+ width: 7px;
406
+ height: 7px;
407
+ flex: 0 0 auto;
408
+ border-radius: 999px;
409
+ background: #697078;
410
+ box-shadow: 0 0 0 1px rgb(255 255 255 / 12%);
411
+ }
412
+
413
+ .openpress-publication-control[data-publication-online="true"] .openpress-publication-dot {
414
+ background: #6ee7a0;
415
+ box-shadow: 0 0 0 1px rgb(110 231 160 / 30%), 0 0 14px rgb(110 231 160 / 24%);
416
+ }
417
+
418
+ .openpress-publication-menu {
419
+ position: absolute;
420
+ top: calc(100% + 8px);
421
+ right: 0;
422
+ z-index: 55;
423
+ display: grid;
424
+ width: min(320px, calc(100vw - 32px));
425
+ gap: 10px;
426
+ border: 1px solid rgb(255 255 255 / 12%);
427
+ padding: 12px;
428
+ background: rgb(22 22 22 / 98%);
429
+ box-shadow: 0 18px 48px rgb(0 0 0 / 42%);
430
+ }
431
+
432
+ .openpress-publication-menu__row {
433
+ display: flex;
434
+ align-items: baseline;
435
+ justify-content: space-between;
436
+ gap: 16px;
437
+ color: #8f969d;
438
+ font-size: 11px;
439
+ line-height: 1.4;
440
+ }
441
+
442
+ .openpress-publication-menu__row strong {
443
+ color: #f2f2f0;
444
+ font-size: 12px;
445
+ font-weight: 500;
446
+ text-align: right;
447
+ }
448
+
449
+ .openpress-publication-menu__note {
450
+ margin: 0;
451
+ border-top: 1px solid rgb(255 255 255 / 8%);
452
+ padding-top: 10px;
453
+ color: #aeb3b8;
454
+ font-size: 12px;
455
+ line-height: 1.5;
456
+ }
457
+
458
+ .openpress-publication-menu__actions {
459
+ display: grid;
460
+ gap: 6px;
461
+ }
462
+
463
+ .openpress-publication-menu__actions button {
464
+ display: inline-flex;
465
+ height: 32px;
466
+ align-items: center;
467
+ justify-content: flex-start;
468
+ gap: 8px;
469
+ border: 1px solid rgb(255 255 255 / 10%);
470
+ padding: 0 10px;
471
+ background: rgb(255 255 255 / 4%);
472
+ color: #f0f1ee;
473
+ font: inherit;
474
+ font-size: 12px;
475
+ line-height: 1;
476
+ cursor: pointer;
477
+ transition:
478
+ border-color 160ms ease,
479
+ background 160ms ease,
480
+ color 160ms ease;
481
+ }
482
+
483
+ .openpress-publication-menu__actions button:hover:not(:disabled) {
484
+ border-color: rgb(240 182 76 / 36%);
485
+ background: rgb(240 182 76 / 10%);
486
+ color: #fff;
487
+ }
488
+
489
+ .openpress-publication-menu__actions button:disabled {
490
+ cursor: not-allowed;
491
+ opacity: 0.45;
492
+ }
493
+
494
+ .openpress-publication-menu__actions svg {
495
+ width: 13px;
496
+ height: 13px;
497
+ flex: 0 0 auto;
498
+ color: var(--openpress-accent);
499
+ }
500
+
501
+ .openpress-page-count {
502
+ display: inline-flex;
503
+ align-items: center;
504
+ gap: 5px;
505
+ color: #9da3aa;
506
+ font-size: 12px;
507
+ font-variant-numeric: tabular-nums;
508
+ letter-spacing: 0.04em;
509
+ min-width: 74px;
510
+ justify-content: center;
511
+ }
512
+
513
+ .openpress-page-count__label {
514
+ color: #6f7680;
515
+ font-size: 10px;
516
+ letter-spacing: 0.08em;
517
+ text-transform: uppercase;
518
+ }
519
+
520
+ .openpress-page-count .sep {
521
+ opacity: 0.45;
522
+ }
523
+
524
+ .openpress-workspace-progress {
525
+ position: absolute;
526
+ right: 24px;
527
+ bottom: 0;
528
+ left: 24px;
529
+ width: auto;
530
+ height: 2px;
531
+ overflow: visible;
532
+ background: rgb(255 255 255 / 10%);
533
+ cursor: pointer;
534
+ }
535
+
536
+ .openpress-workspace-progress__bar {
537
+ position: static;
538
+ display: block;
539
+ width: var(--progress, 0%);
540
+ height: 2px;
541
+ background: rgb(255 255 255 / 62%);
542
+ transition: width 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
543
+ }
544
+
545
+ .openpress-editor-rail {
546
+ grid-area: rail;
547
+ display: flex;
548
+ flex-direction: column;
549
+ align-items: stretch;
550
+ gap: 8px;
551
+ border-right: 1px solid rgb(255 255 255 / 9%);
552
+ padding: 12px 8px;
553
+ background: #101010;
554
+ color: #dfe1dd;
555
+ }
556
+
557
+ .openpress-editor-rail__button {
558
+ display: grid;
559
+ justify-items: center;
560
+ gap: 5px;
561
+ min-width: 0;
562
+ border: 1px solid transparent;
563
+ padding: 9px 4px;
564
+ background: transparent;
565
+ color: #858b92;
566
+ font: inherit;
567
+ font-size: 10px;
568
+ line-height: 1.1;
569
+ cursor: pointer;
570
+ transition:
571
+ border-color 160ms ease,
572
+ background 160ms ease,
573
+ color 160ms ease;
574
+ }
575
+
576
+ .openpress-editor-rail__button:hover,
577
+ .openpress-editor-rail__button.is-active {
578
+ border-color: rgb(223 75 33 / 42%);
579
+ background: rgb(223 75 33 / 10%);
580
+ color: #f2f2f0;
581
+ }
582
+
583
+ .openpress-editor-rail__button svg {
584
+ width: 17px;
585
+ height: 17px;
586
+ color: var(--openpress-accent);
587
+ }
588
+
589
+ .openpress-editor-rail__button span {
590
+ overflow: hidden;
591
+ max-width: 100%;
592
+ text-overflow: ellipsis;
593
+ white-space: nowrap;
594
+ }
595
+
596
+ .openpress-editor-navigator {
597
+ grid-area: left;
598
+ min-width: 0;
599
+ min-height: 0;
600
+ overflow: hidden;
601
+ background: #171717;
602
+ }
603
+
604
+ .openpress-reader-app[data-active-workspace="document"] .openpress-editor-navigator {
605
+ display: none;
606
+ }
607
+
608
+ .openpress-reader-app.is-closed-left .openpress-editor-navigator {
609
+ pointer-events: none;
610
+ }
611
+
612
+ .openpress-reader-app.is-closed-left .openpress-editor-navigator > * {
613
+ opacity: 0;
614
+ }
615
+
616
+ .openpress-editor-canvas {
617
+ grid-area: main;
618
+ }
619
+
620
+ .openpress-editor-inspector {
621
+ grid-area: right;
622
+ }
623
+
624
+ .openpress-editor-inspector-section {
625
+ border-bottom: 1px solid rgb(255 255 255 / 8%);
626
+ padding: 18px 0;
627
+ }
628
+
629
+ .openpress-editor-inspector-card {
630
+ display: grid;
631
+ gap: 7px;
632
+ padding: 0 18px 0 30px;
633
+ }
634
+
635
+ .openpress-editor-inspector-card span {
636
+ color: #777d84;
637
+ font-size: 11px;
638
+ text-transform: uppercase;
639
+ }
640
+
641
+ .openpress-editor-inspector-card strong {
642
+ color: #f2f2f0;
643
+ font-size: 26px;
644
+ font-weight: 400;
645
+ line-height: 1;
646
+ }
647
+
648
+ .openpress-editor-inspector-card p {
649
+ margin: 0;
650
+ color: #9ba1a8;
651
+ font-size: 12px;
652
+ line-height: 1.45;
653
+ }
654
+
655
+ .openpress-editor-stack {
656
+ display: grid;
657
+ gap: 8px;
658
+ padding: 0 18px 0 30px;
659
+ }
660
+
661
+ .openpress-editor-inspector-row {
662
+ display: grid;
663
+ gap: 3px;
664
+ min-width: 0;
665
+ border: 1px solid rgb(255 255 255 / 8%);
666
+ padding: 9px;
667
+ background: rgb(255 255 255 / 3%);
668
+ }
669
+
670
+ .openpress-editor-inspector-row strong,
671
+ .openpress-editor-inspector-row small {
672
+ overflow: hidden;
673
+ min-width: 0;
674
+ text-overflow: ellipsis;
675
+ white-space: nowrap;
676
+ }
677
+
678
+ .openpress-editor-inspector-row strong {
679
+ color: #dfe1dd;
680
+ font-size: 12px;
681
+ font-weight: 500;
682
+ }
683
+
684
+ .openpress-editor-inspector-row small {
685
+ color: #757b82;
686
+ font-size: 11px;
687
+ }
688
+
689
+ .openpress-reader-app .reader-stage {
690
+ position: relative;
691
+ width: 100%;
692
+ height: 100%;
693
+ min-height: 0;
694
+ overflow: auto;
695
+ overscroll-behavior: auto;
696
+ background: transparent;
697
+ scrollbar-width: none;
698
+ scroll-behavior: smooth;
699
+ }
700
+
701
+ /* Mandatory snap only in paged mode — reading mode needs free scroll within
702
+ long flowed sections, not page-by-page snap-back. */
703
+ .openpress-reader-app[data-openpress-view-mode="paged"] .reader-stage,
704
+ .openpress-reader-app:not([data-openpress-view-mode]) .reader-stage {
705
+ scroll-snap-type: y mandatory;
706
+ }
707
+
708
+ .openpress-workbench__stage[data-workspace-view="project"] .reader-stage {
709
+ display: block;
710
+ align-items: initial;
711
+ justify-content: initial;
712
+ }
713
+
714
+ .openpress-reader-app .reader-stage::-webkit-scrollbar,
715
+ .openpress-workspace-panel::-webkit-scrollbar,
716
+ .openpress-reader-app .reader-bookmarks::-webkit-scrollbar {
717
+ width: 0;
718
+ height: 0;
719
+ display: none;
720
+ }
@@ -0,0 +1,14 @@
1
+ @import url("/openpress/fonts.css");
2
+ @import url("/openpress/tokens.css");
3
+ @import url("/openpress/content.css");
4
+ @import url("/openpress/components.css");
5
+
6
+ @import "./openpress/app-shell.css";
7
+ @import "./openpress/workbench.css";
8
+ @import "./openpress/workbench-panels.css";
9
+ @import "./openpress/project-workspace.css";
10
+ @import "./openpress/media-workspace.css";
11
+ @import "./openpress/reader-runtime.css";
12
+ @import "./openpress/public-viewer.css";
13
+ @import "./openpress/responsive.css";
14
+ @import "./openpress/print-route.css";