sdocs-dev 1.3.0 → 1.4.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.
- package/bin/sdocs-dev.js +192 -25
- package/package.json +9 -10
- package/public/sdocs-styles.js +162 -162
- package/public/brotli-wasm-v1.js +0 -518
- package/public/brotli_wasm_bg.wasm +0 -0
- package/public/css/layout.css +0 -240
- package/public/css/mobile.css +0 -196
- package/public/css/panel.css +0 -393
- package/public/css/rendered.css +0 -478
- package/public/css/tokens.css +0 -116
- package/public/css/write.css +0 -128
- package/public/fonts/inter-400.woff2 +0 -0
- package/public/fonts/inter-500.woff2 +0 -0
- package/public/fonts/inter-600.woff2 +0 -0
- package/public/images/examples.png +0 -0
- package/public/index.html +0 -694
- package/public/sdoc.md +0 -542
- package/public/sdocs-app.js +0 -812
- package/public/sdocs-charts.js +0 -905
- package/public/sdocs-controls.js +0 -354
- package/public/sdocs-export.js +0 -1090
- package/public/sdocs-state.js +0 -73
- package/public/sdocs-theme.js +0 -262
- package/public/sdocs-write.js +0 -740
- package/public/sw.js +0 -110
- package/public/vendor/marked.min.js +0 -6
- package/public/vendor/purify.min.js +0 -3
- package/server.js +0 -176
package/public/css/rendered.css
DELETED
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
/* ═══════════════════════════════════════════════════
|
|
2
|
-
RENDERED MARKDOWN
|
|
3
|
-
═══════════════════════════════════════════════════ */
|
|
4
|
-
:is(#rendered, #write) {
|
|
5
|
-
padding: 40px 48px 60px;
|
|
6
|
-
max-width: 760px;
|
|
7
|
-
margin: 0 auto;
|
|
8
|
-
|
|
9
|
-
--md-bg: #FFFFFF;
|
|
10
|
-
--md-font-family: 'Inter', system-ui, sans-serif;
|
|
11
|
-
--md-base-size: 16px;
|
|
12
|
-
--md-line-height: 1.75;
|
|
13
|
-
--md-color: #1C1917;
|
|
14
|
-
--md-h-font-family: inherit;
|
|
15
|
-
--md-h-scale: 1;
|
|
16
|
-
--md-h-margin-bottom: 0.4em;
|
|
17
|
-
--md-h-color: var(--md-color);
|
|
18
|
-
--md-h1-size: 2.1em;
|
|
19
|
-
--md-h1-color: var(--md-h-color);
|
|
20
|
-
--md-h1-margin: 0 0 0.3em;
|
|
21
|
-
--md-h1-weight: 700;
|
|
22
|
-
--md-h2-size: 1.55em;
|
|
23
|
-
--md-h2-color: var(--md-h-color);
|
|
24
|
-
--md-h2-margin: 1.4em 0 0.3em;
|
|
25
|
-
--md-h2-weight: 600;
|
|
26
|
-
--md-h3-size: 1.2em;
|
|
27
|
-
--md-h3-color: var(--md-h-color);
|
|
28
|
-
--md-h3-margin: 1.2em 0 0.3em;
|
|
29
|
-
--md-h3-weight: 600;
|
|
30
|
-
--md-h4-size: 1.0em;
|
|
31
|
-
--md-h4-color: var(--md-h-color);
|
|
32
|
-
--md-h4-margin: 1.0em 0 0.25em;
|
|
33
|
-
--md-h4-weight: 600;
|
|
34
|
-
--md-p-color: var(--md-color);
|
|
35
|
-
--md-list-color: var(--md-p-color);
|
|
36
|
-
--md-list-spacing: 0.3em;
|
|
37
|
-
--md-list-indent: 1.6em;
|
|
38
|
-
--md-p-line-height: var(--md-line-height);
|
|
39
|
-
--md-p-margin: 0 0 1.1em;
|
|
40
|
-
--md-link-color: #2563EB;
|
|
41
|
-
--md-link-decoration: underline;
|
|
42
|
-
--md-code-bg: #F4F1ED;
|
|
43
|
-
--md-code-color: #6B21A8;
|
|
44
|
-
--md-code-padding: 0.15em 0.45em;
|
|
45
|
-
--md-code-radius: 4px;
|
|
46
|
-
--md-code-font: 'JetBrains Mono', 'Fira Mono', monospace;
|
|
47
|
-
--md-pre-bg: #F4F1ED;
|
|
48
|
-
--md-pre-padding: 1.1em 1.25em;
|
|
49
|
-
--md-bq-border: 3px solid #2563EB;
|
|
50
|
-
--md-bq-size: 1em;
|
|
51
|
-
--md-bq-color: #6B6560;
|
|
52
|
-
--md-bq-padding: 0.5em 1em;
|
|
53
|
-
--md-bq-margin: 1.2em 0;
|
|
54
|
-
|
|
55
|
-
font-family: var(--md-font-family);
|
|
56
|
-
font-size: var(--md-base-size);
|
|
57
|
-
color: var(--md-color);
|
|
58
|
-
line-height: var(--md-line-height);
|
|
59
|
-
background-color: var(--md-bg);
|
|
60
|
-
}
|
|
61
|
-
:is(#rendered, #write) h1 {
|
|
62
|
-
font-family: var(--md-h-font-family);
|
|
63
|
-
font-size: calc(var(--md-h1-size) * var(--md-h-scale));
|
|
64
|
-
color: var(--md-h1-color);
|
|
65
|
-
margin: var(--md-h1-margin);
|
|
66
|
-
font-weight: var(--md-h1-weight);
|
|
67
|
-
letter-spacing: -0.02em;
|
|
68
|
-
line-height: 1.2;
|
|
69
|
-
}
|
|
70
|
-
:is(#rendered, #write) h2 {
|
|
71
|
-
font-family: var(--md-h-font-family);
|
|
72
|
-
font-size: calc(var(--md-h2-size) * var(--md-h-scale));
|
|
73
|
-
color: var(--md-h2-color);
|
|
74
|
-
margin: var(--md-h2-margin);
|
|
75
|
-
font-weight: var(--md-h2-weight);
|
|
76
|
-
letter-spacing: -0.015em;
|
|
77
|
-
line-height: 1.3;
|
|
78
|
-
padding-bottom: 0.3em;
|
|
79
|
-
border-bottom: 1px solid var(--md-h2-border);
|
|
80
|
-
}
|
|
81
|
-
:is(#rendered, #write) h3 {
|
|
82
|
-
font-family: var(--md-h-font-family);
|
|
83
|
-
font-size: calc(var(--md-h3-size) * var(--md-h-scale));
|
|
84
|
-
color: var(--md-h3-color);
|
|
85
|
-
margin: var(--md-h3-margin);
|
|
86
|
-
font-weight: var(--md-h3-weight);
|
|
87
|
-
letter-spacing: -0.01em;
|
|
88
|
-
line-height: 1.4;
|
|
89
|
-
}
|
|
90
|
-
:is(#rendered, #write) h4 {
|
|
91
|
-
font-family: var(--md-h-font-family);
|
|
92
|
-
font-size: calc(var(--md-h4-size) * var(--md-h-scale));
|
|
93
|
-
color: var(--md-h4-color);
|
|
94
|
-
margin: var(--md-h4-margin);
|
|
95
|
-
font-weight: var(--md-h4-weight);
|
|
96
|
-
line-height: 1.5;
|
|
97
|
-
}
|
|
98
|
-
:is(#rendered, #write) p {
|
|
99
|
-
color: var(--md-p-color);
|
|
100
|
-
line-height: var(--md-p-line-height);
|
|
101
|
-
margin: var(--md-p-margin);
|
|
102
|
-
}
|
|
103
|
-
:is(#rendered, #write) a {
|
|
104
|
-
color: var(--md-link-color);
|
|
105
|
-
text-decoration: var(--md-link-decoration);
|
|
106
|
-
text-underline-offset: 2px;
|
|
107
|
-
cursor: pointer;
|
|
108
|
-
}
|
|
109
|
-
:is(#rendered, #write) a:hover { opacity: .8; }
|
|
110
|
-
|
|
111
|
-
/* ── Collapsible heading sections ── */
|
|
112
|
-
#rendered .md-section > h2,
|
|
113
|
-
#rendered .md-section > h3,
|
|
114
|
-
#rendered .md-section > h4 {
|
|
115
|
-
cursor: pointer;
|
|
116
|
-
}
|
|
117
|
-
#rendered .section-toggle {
|
|
118
|
-
display: inline-flex;
|
|
119
|
-
align-items: center;
|
|
120
|
-
justify-content: center;
|
|
121
|
-
width: 16px;
|
|
122
|
-
height: 16px;
|
|
123
|
-
color: var(--text-3);
|
|
124
|
-
cursor: pointer;
|
|
125
|
-
margin-right: 4px;
|
|
126
|
-
vertical-align: middle;
|
|
127
|
-
transition: transform .18s cubic-bezier(.4,0,.2,1), color .12s;
|
|
128
|
-
transform: rotate(0deg);
|
|
129
|
-
}
|
|
130
|
-
#rendered .section-toggle.open {
|
|
131
|
-
transform: rotate(90deg);
|
|
132
|
-
}
|
|
133
|
-
#rendered .section-toggle:hover,
|
|
134
|
-
#rendered h1:hover > .section-toggle,
|
|
135
|
-
#rendered .md-section > h2:hover > .section-toggle,
|
|
136
|
-
#rendered .md-section > h3:hover > .section-toggle,
|
|
137
|
-
#rendered .md-section > h4:hover > .section-toggle,
|
|
138
|
-
#rendered > h1:hover ~ .md-section .section-toggle,
|
|
139
|
-
#rendered .md-section > h2:hover ~ .md-section-body .section-toggle,
|
|
140
|
-
#rendered .md-section > h3:hover ~ .md-section-body .section-toggle,
|
|
141
|
-
#rendered .md-section > h4:hover ~ .md-section-body .section-toggle {
|
|
142
|
-
color: var(--text-2);
|
|
143
|
-
}
|
|
144
|
-
#rendered .md-section-body:not(.open):not(:has(.md-section-body.open)) > :not(.md-section) {
|
|
145
|
-
display: none;
|
|
146
|
-
}
|
|
147
|
-
#rendered .md-section-body:not(.open):not(:has(.md-section-body.open)):has(> :not(.md-section)):has(> .md-section)::before {
|
|
148
|
-
content: "\2026";
|
|
149
|
-
display: block;
|
|
150
|
-
opacity: 1;
|
|
151
|
-
font-weight: bold;
|
|
152
|
-
padding-left: calc(1.2em + 20px);
|
|
153
|
-
font-size: 1rem;
|
|
154
|
-
color: var(--text-3);
|
|
155
|
-
padding-bottom: 10px;
|
|
156
|
-
line-height: 0.1;
|
|
157
|
-
}
|
|
158
|
-
#rendered .md-section-body:not(.open):has(.md-section-body.open) > :not(.md-section) {
|
|
159
|
-
opacity: 0.55;
|
|
160
|
-
padding-left: calc(1.2em + 20px);
|
|
161
|
-
}
|
|
162
|
-
#rendered .md-section-body:not(.open) > .md-section:not(:has(> .md-section-body.open)) {
|
|
163
|
-
padding-left: 1.2em;
|
|
164
|
-
}
|
|
165
|
-
#rendered .md-section-body:not(.open) > .md-section:not(:has(> .md-section-body.open)) > h2,
|
|
166
|
-
#rendered .md-section-body:not(.open) > .md-section:not(:has(> .md-section-body.open)) > h3,
|
|
167
|
-
#rendered .md-section-body:not(.open) > .md-section:not(:has(> .md-section-body.open)) > h4 {
|
|
168
|
-
margin-top: 0.15em;
|
|
169
|
-
margin-bottom: 0.1em;
|
|
170
|
-
padding-bottom: 0;
|
|
171
|
-
border-bottom: none;
|
|
172
|
-
opacity: 0.55;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/* ── Header anchor links ── */
|
|
176
|
-
#rendered h1, #rendered h2, #rendered h3, #rendered h4 { position: relative; }
|
|
177
|
-
#rendered .header-anchor {
|
|
178
|
-
display: inline-flex;
|
|
179
|
-
align-items: center;
|
|
180
|
-
margin-left: 6px;
|
|
181
|
-
opacity: 0.5;
|
|
182
|
-
transition: opacity 0.15s;
|
|
183
|
-
color: var(--md-link-color, #2563eb);
|
|
184
|
-
cursor: pointer;
|
|
185
|
-
vertical-align: middle;
|
|
186
|
-
}
|
|
187
|
-
#rendered .header-anchor:hover { opacity: 1; }
|
|
188
|
-
#rendered .header-copy-btn {
|
|
189
|
-
display: inline-flex;
|
|
190
|
-
align-items: center;
|
|
191
|
-
margin-left: 4px;
|
|
192
|
-
opacity: 0.5;
|
|
193
|
-
transition: opacity 0.15s;
|
|
194
|
-
color: var(--md-link-color, #2563eb);
|
|
195
|
-
cursor: pointer;
|
|
196
|
-
vertical-align: middle;
|
|
197
|
-
background: none;
|
|
198
|
-
border: none;
|
|
199
|
-
padding: 0;
|
|
200
|
-
font: inherit;
|
|
201
|
-
line-height: 1;
|
|
202
|
-
}
|
|
203
|
-
#rendered .header-copy-btn:hover { opacity: 1; }
|
|
204
|
-
|
|
205
|
-
/* ── Scroll padding for anchor jumps ── */
|
|
206
|
-
#content-area { scroll-padding-top: 24px; }
|
|
207
|
-
|
|
208
|
-
:is(#rendered, #write) code {
|
|
209
|
-
background: var(--md-code-bg);
|
|
210
|
-
color: var(--md-code-color);
|
|
211
|
-
padding: var(--md-code-padding);
|
|
212
|
-
border-radius: var(--md-code-radius);
|
|
213
|
-
font-family: var(--md-code-font);
|
|
214
|
-
font-size: 0.85em;
|
|
215
|
-
overflow-wrap: anywhere;
|
|
216
|
-
}
|
|
217
|
-
#rendered .pre-wrapper {
|
|
218
|
-
position: relative;
|
|
219
|
-
margin: 1.2em 0;
|
|
220
|
-
}
|
|
221
|
-
:is(#rendered, #write) pre {
|
|
222
|
-
background: var(--md-pre-bg);
|
|
223
|
-
padding: var(--md-pre-padding);
|
|
224
|
-
border-radius: var(--radius-md);
|
|
225
|
-
overflow-x: auto;
|
|
226
|
-
overscroll-behavior-x: contain;
|
|
227
|
-
white-space: pre;
|
|
228
|
-
word-wrap: normal;
|
|
229
|
-
margin: 1.2em 0;
|
|
230
|
-
border: 1px solid var(--md-pre-border);
|
|
231
|
-
}
|
|
232
|
-
#rendered pre {
|
|
233
|
-
padding-top: 26px;
|
|
234
|
-
margin: 0;
|
|
235
|
-
}
|
|
236
|
-
#rendered .pre-wrapper .copy-btn {
|
|
237
|
-
position: absolute;
|
|
238
|
-
top: 6px;
|
|
239
|
-
right: 6px;
|
|
240
|
-
background: var(--md-pre-bg);
|
|
241
|
-
border: 1px solid var(--md-copy-btn-border);
|
|
242
|
-
border-radius: 4px;
|
|
243
|
-
padding: 3px 5px;
|
|
244
|
-
cursor: pointer;
|
|
245
|
-
opacity: 0.7;
|
|
246
|
-
transition: opacity 0.15s;
|
|
247
|
-
color: var(--md-code-color, #6B21A8);
|
|
248
|
-
font-size: 12px;
|
|
249
|
-
line-height: 1;
|
|
250
|
-
display: flex;
|
|
251
|
-
align-items: center;
|
|
252
|
-
gap: 3px;
|
|
253
|
-
z-index: 1;
|
|
254
|
-
}
|
|
255
|
-
#rendered .pre-wrapper .copy-btn:hover { opacity: 1; background: var(--md-copy-btn-hover); }
|
|
256
|
-
:is(#rendered, #write) pre code {
|
|
257
|
-
background: none;
|
|
258
|
-
padding: 0;
|
|
259
|
-
color: var(--md-code-color);
|
|
260
|
-
font-family: var(--md-code-font);
|
|
261
|
-
font-size: 0.88em;
|
|
262
|
-
overflow: visible;
|
|
263
|
-
white-space: pre;
|
|
264
|
-
word-break: normal;
|
|
265
|
-
}
|
|
266
|
-
/* ── Charts ── */
|
|
267
|
-
.sdoc-chart {
|
|
268
|
-
margin: 1.2em 0;
|
|
269
|
-
padding: 16px;
|
|
270
|
-
border-radius: var(--radius, 8px);
|
|
271
|
-
background: var(--md-chart-bg, var(--md-block-bg, #F5F2EE));
|
|
272
|
-
max-width: 100%;
|
|
273
|
-
position: relative;
|
|
274
|
-
}
|
|
275
|
-
.sdoc-chart canvas { max-height: 400px; }
|
|
276
|
-
.sdoc-chart-error { outline: 2px dashed #ef4444; }
|
|
277
|
-
|
|
278
|
-
/* Chart menu */
|
|
279
|
-
.chart-menu-btn {
|
|
280
|
-
position: absolute; top: 6px; right: 6px;
|
|
281
|
-
background: var(--md-chart-bg, var(--md-block-bg, #F5F2EE));
|
|
282
|
-
border: 1px solid var(--md-copy-btn-border, rgba(0,0,0,0.1));
|
|
283
|
-
border-radius: 4px;
|
|
284
|
-
padding: 3px 5px;
|
|
285
|
-
cursor: pointer; opacity: 0.7;
|
|
286
|
-
transition: opacity .15s;
|
|
287
|
-
color: var(--md-chart-text, var(--text-3, #999));
|
|
288
|
-
font-size: 12px; line-height: 1;
|
|
289
|
-
display: flex; align-items: center; justify-content: center;
|
|
290
|
-
z-index: 2;
|
|
291
|
-
}
|
|
292
|
-
.chart-menu-btn:hover { opacity: 1; background: var(--md-copy-btn-hover, rgba(0,0,0,0.05)); }
|
|
293
|
-
|
|
294
|
-
.chart-menu {
|
|
295
|
-
display: none; position: absolute; top: 36px; right: 8px;
|
|
296
|
-
min-width: 160px; width: max-content; background: var(--bg-surface, #fff);
|
|
297
|
-
border: 1px solid var(--border, #e0dcd7);
|
|
298
|
-
border-radius: var(--radius, 8px);
|
|
299
|
-
box-shadow: 0 4px 16px rgba(0,0,0,0.12);
|
|
300
|
-
padding: 6px 0; z-index: 10; font-size: 13px; color: var(--text, #333);
|
|
301
|
-
}
|
|
302
|
-
.chart-menu.open { display: block; }
|
|
303
|
-
|
|
304
|
-
.chart-menu-item {
|
|
305
|
-
display: block; width: 100%; padding: 6px 14px;
|
|
306
|
-
border: none; background: none; text-align: left;
|
|
307
|
-
cursor: pointer; font-size: 13px; color: var(--text, #333);
|
|
308
|
-
}
|
|
309
|
-
.chart-menu-item:hover { background: var(--bg-hover, #f5f3f0); }
|
|
310
|
-
|
|
311
|
-
.chart-menu-sep { height: 1px; background: var(--border, #e0dcd7); margin: 4px 0; }
|
|
312
|
-
|
|
313
|
-
.chart-menu-toggle {
|
|
314
|
-
display: flex; align-items: center; gap: 6px;
|
|
315
|
-
padding: 5px 14px; cursor: pointer; font-size: 13px; color: var(--text-2, #666);
|
|
316
|
-
}
|
|
317
|
-
.chart-menu-toggle:hover { background: var(--bg-hover, #f5f3f0); }
|
|
318
|
-
.chart-menu-toggle input { margin: 0; }
|
|
319
|
-
|
|
320
|
-
.chart-menu-types { display: flex; gap: 3px; padding: 4px 10px; flex-wrap: wrap; }
|
|
321
|
-
.chart-type-btn {
|
|
322
|
-
padding: 3px 10px; border: 1px solid var(--border, #e0dcd7);
|
|
323
|
-
background: none; border-radius: var(--radius-sm, 4px);
|
|
324
|
-
font-size: 11px; cursor: pointer; color: var(--text-2, #666);
|
|
325
|
-
white-space: nowrap;
|
|
326
|
-
}
|
|
327
|
-
.chart-type-btn:hover { background: var(--bg-hover, #f5f3f0); }
|
|
328
|
-
.chart-type-btn.active {
|
|
329
|
-
background: var(--bg-input, #fff); color: var(--text, #333);
|
|
330
|
-
border-color: var(--border-strong, #c0bbb5); box-shadow: 0 1px 2px rgba(0,0,0,0.06);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.chart-menu-input {
|
|
334
|
-
display: block; width: calc(100% - 28px); margin: 4px 14px;
|
|
335
|
-
padding: 4px 8px; border: 1px solid var(--border, #e0dcd7);
|
|
336
|
-
border-radius: var(--radius-sm, 4px); font-size: 12px;
|
|
337
|
-
background: var(--bg-input, #fff); color: var(--text, #333);
|
|
338
|
-
}
|
|
339
|
-
.chart-menu-input:focus { outline: none; border-color: var(--accent, #3b82f6); }
|
|
340
|
-
|
|
341
|
-
:is(#rendered, #write) blockquote {
|
|
342
|
-
border-left: var(--md-bq-border);
|
|
343
|
-
font-size: var(--md-bq-size);
|
|
344
|
-
color: var(--md-bq-color);
|
|
345
|
-
padding: var(--md-bq-padding);
|
|
346
|
-
margin: var(--md-bq-margin);
|
|
347
|
-
background: var(--md-bq-bg);
|
|
348
|
-
border-radius: 0 var(--radius) var(--radius) 0;
|
|
349
|
-
}
|
|
350
|
-
:is(#rendered, #write) blockquote p { margin: 0; color: inherit; }
|
|
351
|
-
:is(#rendered, #write) ul, :is(#rendered, #write) ol {
|
|
352
|
-
padding-left: var(--md-list-indent);
|
|
353
|
-
margin: 0.5em 0 1.1em;
|
|
354
|
-
}
|
|
355
|
-
:is(#rendered, #write) li { margin-bottom: var(--md-list-spacing); color: var(--md-list-color); }
|
|
356
|
-
:is(#rendered, #write) li::marker { color: var(--md-list-color); }
|
|
357
|
-
:is(#rendered, #write) hr {
|
|
358
|
-
border: none;
|
|
359
|
-
border-top: 1px solid var(--md-hr-border);
|
|
360
|
-
margin: 2em 0;
|
|
361
|
-
}
|
|
362
|
-
:is(#rendered, #write) table {
|
|
363
|
-
border-collapse: collapse;
|
|
364
|
-
width: 100%;
|
|
365
|
-
margin: 1.2em 0;
|
|
366
|
-
font-size: 0.92em;
|
|
367
|
-
}
|
|
368
|
-
:is(#rendered, #write) th, :is(#rendered, #write) td {
|
|
369
|
-
border: 1px solid var(--md-table-border);
|
|
370
|
-
padding: 7px 12px;
|
|
371
|
-
text-align: left;
|
|
372
|
-
}
|
|
373
|
-
:is(#rendered, #write) th {
|
|
374
|
-
background: var(--md-table-header-bg);
|
|
375
|
-
font-weight: 600;
|
|
376
|
-
color: var(--text);
|
|
377
|
-
}
|
|
378
|
-
:is(#rendered, #write) tr:nth-child(even) td { background: var(--md-table-even-bg); }
|
|
379
|
-
:is(#rendered, #write) img { max-width: 100%; border-radius: var(--radius-md); }
|
|
380
|
-
|
|
381
|
-
/* ── File-info card (shown when front matter has `file:`) ─────────── */
|
|
382
|
-
/* Inherits the block cascade: --md-fic-bg / --md-fic-text fall back to
|
|
383
|
-
--md-block-bg / --md-block-text so the card blends in with code blocks,
|
|
384
|
-
blockquotes, and charts. Override per-doc via `styles.fileinfo` in YAML. */
|
|
385
|
-
#file-info-card[hidden] { display: none; }
|
|
386
|
-
#file-info-card {
|
|
387
|
-
--fic-bg: var(--md-fic-bg, var(--md-block-bg, var(--bg)));
|
|
388
|
-
--fic-text: var(--md-fic-text, var(--md-block-text, var(--text)));
|
|
389
|
-
--fic-muted: color-mix(in srgb, var(--fic-text) 60%, transparent);
|
|
390
|
-
--fic-border: color-mix(in srgb, var(--fic-text) 15%, transparent);
|
|
391
|
-
--fic-hover: color-mix(in srgb, var(--fic-text) 8%, transparent);
|
|
392
|
-
|
|
393
|
-
max-width: 680px;
|
|
394
|
-
margin: 24px auto 0;
|
|
395
|
-
padding: 10px 16px;
|
|
396
|
-
background: var(--fic-bg);
|
|
397
|
-
border: 1px solid var(--fic-border);
|
|
398
|
-
border-radius: var(--radius-md);
|
|
399
|
-
box-shadow: var(--shadow-sm);
|
|
400
|
-
font-family: var(--font-ui);
|
|
401
|
-
font-size: 13px;
|
|
402
|
-
color: var(--fic-text);
|
|
403
|
-
display: flex;
|
|
404
|
-
flex-direction: column;
|
|
405
|
-
gap: 6px;
|
|
406
|
-
}
|
|
407
|
-
#file-info-card .fic-rows { display: flex; flex-direction: column; gap: 4px; }
|
|
408
|
-
#file-info-card .fic-row {
|
|
409
|
-
display: flex;
|
|
410
|
-
align-items: center;
|
|
411
|
-
gap: 8px;
|
|
412
|
-
padding: 2px 0;
|
|
413
|
-
border-radius: var(--radius-sm);
|
|
414
|
-
}
|
|
415
|
-
#file-info-card .fic-label {
|
|
416
|
-
color: var(--fic-muted);
|
|
417
|
-
font-size: 11px;
|
|
418
|
-
font-weight: 600;
|
|
419
|
-
text-transform: uppercase;
|
|
420
|
-
letter-spacing: 0.04em;
|
|
421
|
-
min-width: 52px;
|
|
422
|
-
}
|
|
423
|
-
#file-info-card .fic-value {
|
|
424
|
-
flex: 1;
|
|
425
|
-
min-width: 0;
|
|
426
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
427
|
-
font-size: 12.5px;
|
|
428
|
-
color: var(--fic-text);
|
|
429
|
-
overflow-wrap: anywhere;
|
|
430
|
-
word-break: break-word;
|
|
431
|
-
}
|
|
432
|
-
#file-info-card .fic-local-pill {
|
|
433
|
-
font-size: 10px;
|
|
434
|
-
font-weight: 600;
|
|
435
|
-
text-transform: uppercase;
|
|
436
|
-
letter-spacing: 0.04em;
|
|
437
|
-
color: var(--fic-muted);
|
|
438
|
-
background: var(--fic-hover);
|
|
439
|
-
border: 1px solid var(--fic-border);
|
|
440
|
-
border-radius: 999px;
|
|
441
|
-
padding: 2px 7px;
|
|
442
|
-
}
|
|
443
|
-
#file-info-card .fic-copy,
|
|
444
|
-
#file-info-card .fic-action {
|
|
445
|
-
display: inline-flex;
|
|
446
|
-
align-items: center;
|
|
447
|
-
gap: 6px;
|
|
448
|
-
background: transparent;
|
|
449
|
-
border: 1px solid var(--fic-border);
|
|
450
|
-
color: var(--fic-text);
|
|
451
|
-
border-radius: var(--radius-sm);
|
|
452
|
-
padding: 4px 8px;
|
|
453
|
-
font-family: var(--font-ui);
|
|
454
|
-
font-size: 12px;
|
|
455
|
-
cursor: pointer;
|
|
456
|
-
transition: background .1s, border-color .1s, color .1s;
|
|
457
|
-
}
|
|
458
|
-
#file-info-card .fic-copy { padding: 3px 6px; }
|
|
459
|
-
#file-info-card .fic-copy:hover,
|
|
460
|
-
#file-info-card .fic-action:hover {
|
|
461
|
-
background: var(--fic-hover);
|
|
462
|
-
color: var(--fic-text);
|
|
463
|
-
}
|
|
464
|
-
#file-info-card .fic-footer {
|
|
465
|
-
display: flex;
|
|
466
|
-
align-items: center;
|
|
467
|
-
gap: 10px;
|
|
468
|
-
margin-top: 2px;
|
|
469
|
-
}
|
|
470
|
-
#file-info-card .fic-privacy-note {
|
|
471
|
-
margin-left: auto;
|
|
472
|
-
display: inline-flex;
|
|
473
|
-
align-items: center;
|
|
474
|
-
gap: 6px;
|
|
475
|
-
font-size: 11px;
|
|
476
|
-
color: var(--fic-muted);
|
|
477
|
-
}
|
|
478
|
-
#file-info-card .fic-privacy-note[hidden] { display: none; }
|
package/public/css/tokens.css
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('/public/fonts/inter-400.woff2') format('woff2'); }
|
|
2
|
-
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('/public/fonts/inter-500.woff2') format('woff2'); }
|
|
3
|
-
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url('/public/fonts/inter-600.woff2') format('woff2'); }
|
|
4
|
-
|
|
5
|
-
:root {
|
|
6
|
-
--bg: #F7F5F2;
|
|
7
|
-
--bg-surface: #F1EDE8;
|
|
8
|
-
--bg-panel: #EDE8E2;
|
|
9
|
-
--bg-panel-deep: #E7E2DB;
|
|
10
|
-
--bg-input: #FFFFFF;
|
|
11
|
-
--bg-hover: #E8E3DD;
|
|
12
|
-
--bg-active: #E2DDD6;
|
|
13
|
-
|
|
14
|
-
--border: #D4CFC9;
|
|
15
|
-
--border-subtle: #DDD9D3;
|
|
16
|
-
--border-strong: #C5BFB8;
|
|
17
|
-
|
|
18
|
-
--text: #1C1917;
|
|
19
|
-
--text-2: #57534E;
|
|
20
|
-
--text-3: #A8A29E;
|
|
21
|
-
--text-inv: #FAFAF9;
|
|
22
|
-
|
|
23
|
-
--accent: #2563EB;
|
|
24
|
-
--accent-light: #EEF2FF;
|
|
25
|
-
--accent-text: #1D4ED8;
|
|
26
|
-
|
|
27
|
-
--radius-sm: 4px;
|
|
28
|
-
--radius: 6px;
|
|
29
|
-
--radius-md: 8px;
|
|
30
|
-
--radius-lg: 10px;
|
|
31
|
-
|
|
32
|
-
--shadow-sm: 0 1px 2px rgba(28,25,23,.06);
|
|
33
|
-
--shadow: 0 2px 6px rgba(28,25,23,.08), 0 1px 2px rgba(28,25,23,.04);
|
|
34
|
-
--shadow-md: 0 4px 12px rgba(28,25,23,.10), 0 2px 4px rgba(28,25,23,.06);
|
|
35
|
-
|
|
36
|
-
--font-ui: 'Inter', system-ui, -apple-system, sans-serif;
|
|
37
|
-
|
|
38
|
-
--md-h2-border: #EDE8E2;
|
|
39
|
-
--md-toc-border: #E7E2DB;
|
|
40
|
-
--md-pre-border: #E7E2DB;
|
|
41
|
-
--md-bq-bg: #F7F5F2;
|
|
42
|
-
--md-hr-border: #EDE8E2;
|
|
43
|
-
--md-table-border: #E2DDD6;
|
|
44
|
-
--md-table-header-bg: #F4F1ED;
|
|
45
|
-
--md-table-even-bg: #FAFAF8;
|
|
46
|
-
--md-copy-btn-border: rgba(0,0,0,0.12);
|
|
47
|
-
--md-copy-btn-hover: rgba(0,0,0,0.05);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* ═══════════════════════════════════════════════════
|
|
51
|
-
DARK THEME
|
|
52
|
-
═══════════════════════════════════════════════════ */
|
|
53
|
-
html[data-theme="dark"] {
|
|
54
|
-
--bg: #1C1A17;
|
|
55
|
-
--bg-surface: #252320;
|
|
56
|
-
--bg-panel: #211F1D;
|
|
57
|
-
--bg-panel-deep: #1A1816;
|
|
58
|
-
--bg-input: #2C2926;
|
|
59
|
-
--bg-hover: #32302C;
|
|
60
|
-
--bg-active: #3A3733;
|
|
61
|
-
|
|
62
|
-
--border: #3D3935;
|
|
63
|
-
--border-subtle: #332F2B;
|
|
64
|
-
--border-strong: #4A453F;
|
|
65
|
-
|
|
66
|
-
--text: #E7E5E2;
|
|
67
|
-
--text-2: #A8A29E;
|
|
68
|
-
--text-3: #6B6560;
|
|
69
|
-
--text-inv: #1C1917;
|
|
70
|
-
|
|
71
|
-
--accent: #3B82F6;
|
|
72
|
-
--accent-light: #1E293B;
|
|
73
|
-
--accent-text: #60A5FA;
|
|
74
|
-
|
|
75
|
-
--shadow-sm: 0 1px 2px rgba(0,0,0,.20);
|
|
76
|
-
--shadow: 0 2px 6px rgba(0,0,0,.25), 0 1px 2px rgba(0,0,0,.15);
|
|
77
|
-
--shadow-md: 0 4px 12px rgba(0,0,0,.35), 0 2px 4px rgba(0,0,0,.20);
|
|
78
|
-
|
|
79
|
-
--md-h2-border: #3D3935;
|
|
80
|
-
--md-toc-border: #3D3935;
|
|
81
|
-
--md-pre-border: #3D3935;
|
|
82
|
-
--md-bq-bg: #252320;
|
|
83
|
-
--md-hr-border: #3D3935;
|
|
84
|
-
--md-table-border: #3D3935;
|
|
85
|
-
--md-table-header-bg: #2C2926;
|
|
86
|
-
--md-table-even-bg: #242220;
|
|
87
|
-
--md-copy-btn-border: rgba(255,255,255,0.12);
|
|
88
|
-
--md-copy-btn-hover: rgba(255,255,255,0.06);
|
|
89
|
-
}
|
|
90
|
-
html[data-theme="dark"] :is(#rendered, #write) {
|
|
91
|
-
--md-bg: #2c2a26;
|
|
92
|
-
--md-color: #e7e5e2;
|
|
93
|
-
--md-code-bg: #1a1816;
|
|
94
|
-
--md-code-color: #b8a99a;
|
|
95
|
-
--md-pre-bg: #1a1816;
|
|
96
|
-
--md-link-color: #60a5fa;
|
|
97
|
-
--md-bq-color: #a8a29e;
|
|
98
|
-
}
|
|
99
|
-
html[data-theme="dark"] .control-row select {
|
|
100
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236B6560' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/* Theme transitions */
|
|
104
|
-
body,
|
|
105
|
-
#left,
|
|
106
|
-
#right,
|
|
107
|
-
#export-panel,
|
|
108
|
-
#statusbar,
|
|
109
|
-
#left-toolbar,
|
|
110
|
-
#right-header,
|
|
111
|
-
#export-panel-header,
|
|
112
|
-
.panel-header,
|
|
113
|
-
.sub-header,
|
|
114
|
-
#raw {
|
|
115
|
-
transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
|
|
116
|
-
}
|
package/public/css/write.css
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/* ═══════════════════════════════════════════════════
|
|
2
|
-
WRITE MODE
|
|
3
|
-
═══════════════════════════════════════════════════ */
|
|
4
|
-
|
|
5
|
-
/* ── Write div ── */
|
|
6
|
-
#write {
|
|
7
|
-
display: none;
|
|
8
|
-
outline: none;
|
|
9
|
-
min-height: 100%;
|
|
10
|
-
cursor: text;
|
|
11
|
-
}
|
|
12
|
-
#write:empty::before {
|
|
13
|
-
content: 'Start typing\2026';
|
|
14
|
-
color: var(--text-3);
|
|
15
|
-
pointer-events: none;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* ── Write toolbar ── */
|
|
19
|
-
#write-toolbar {
|
|
20
|
-
display: none;
|
|
21
|
-
align-items: center;
|
|
22
|
-
gap: 2px;
|
|
23
|
-
height: 0;
|
|
24
|
-
opacity: 0;
|
|
25
|
-
padding: 0 12px;
|
|
26
|
-
background: var(--bg);
|
|
27
|
-
border-bottom: 1px solid transparent;
|
|
28
|
-
flex-shrink: 0;
|
|
29
|
-
overflow: hidden;
|
|
30
|
-
transition: height .3s cubic-bezier(.4,0,.2,1),
|
|
31
|
-
opacity .22s ease,
|
|
32
|
-
border-color .3s ease,
|
|
33
|
-
padding .3s cubic-bezier(.4,0,.2,1);
|
|
34
|
-
}
|
|
35
|
-
body.write-mode #write-toolbar {
|
|
36
|
-
position: relative;
|
|
37
|
-
display: flex;
|
|
38
|
-
justify-content: center;
|
|
39
|
-
height: 34px;
|
|
40
|
-
opacity: 1;
|
|
41
|
-
border-bottom-color: var(--border-subtle);
|
|
42
|
-
padding: 0 12px;
|
|
43
|
-
overflow-x: auto;
|
|
44
|
-
overflow-y: hidden;
|
|
45
|
-
-webkit-overflow-scrolling: touch;
|
|
46
|
-
scrollbar-width: none;
|
|
47
|
-
}
|
|
48
|
-
body.write-mode #write-toolbar::-webkit-scrollbar {
|
|
49
|
-
display: none;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.write-tb-btn {
|
|
53
|
-
position: relative;
|
|
54
|
-
display: inline-flex;
|
|
55
|
-
align-items: center;
|
|
56
|
-
justify-content: center;
|
|
57
|
-
min-width: 28px;
|
|
58
|
-
width: 28px;
|
|
59
|
-
height: 26px;
|
|
60
|
-
flex-shrink: 0;
|
|
61
|
-
border: none;
|
|
62
|
-
background: none;
|
|
63
|
-
color: var(--text-2);
|
|
64
|
-
cursor: pointer;
|
|
65
|
-
border-radius: var(--radius-sm);
|
|
66
|
-
padding: 0;
|
|
67
|
-
font-size: 12px;
|
|
68
|
-
font-family: var(--font-ui);
|
|
69
|
-
font-weight: 600;
|
|
70
|
-
transition: color .12s, background .12s;
|
|
71
|
-
}
|
|
72
|
-
.write-tb-btn:hover {
|
|
73
|
-
color: var(--text);
|
|
74
|
-
background: var(--bg-hover);
|
|
75
|
-
}
|
|
76
|
-
.write-tb-btn.active {
|
|
77
|
-
color: var(--text);
|
|
78
|
-
background: var(--bg-input);
|
|
79
|
-
box-shadow: var(--shadow-sm);
|
|
80
|
-
}
|
|
81
|
-
.write-tb-btn code {
|
|
82
|
-
font-size: 11px;
|
|
83
|
-
font-family: 'JetBrains Mono', monospace;
|
|
84
|
-
background: none;
|
|
85
|
-
padding: 0;
|
|
86
|
-
color: inherit;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.write-tb-sep {
|
|
90
|
-
width: 1px;
|
|
91
|
-
height: 16px;
|
|
92
|
-
background: var(--border);
|
|
93
|
-
margin: 6px 0;
|
|
94
|
-
flex-shrink: 0;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/* ── Tooltips ── */
|
|
98
|
-
.write-tb-btn[data-tip]::after {
|
|
99
|
-
content: attr(data-tip);
|
|
100
|
-
position: absolute;
|
|
101
|
-
bottom: calc(100% + 6px);
|
|
102
|
-
left: 50%;
|
|
103
|
-
transform: translateX(-50%);
|
|
104
|
-
padding: 3px 8px;
|
|
105
|
-
background: var(--text);
|
|
106
|
-
color: var(--bg);
|
|
107
|
-
font-size: 11px;
|
|
108
|
-
font-weight: 500;
|
|
109
|
-
white-space: nowrap;
|
|
110
|
-
border-radius: 4px;
|
|
111
|
-
pointer-events: none;
|
|
112
|
-
opacity: 0;
|
|
113
|
-
transition: opacity .15s ease;
|
|
114
|
-
}
|
|
115
|
-
.write-tb-btn[data-tip]:hover::after {
|
|
116
|
-
opacity: 1;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* ── Visibility rules ── */
|
|
120
|
-
body.write-mode #write {
|
|
121
|
-
display: block;
|
|
122
|
-
}
|
|
123
|
-
body.write-mode #rendered {
|
|
124
|
-
display: none;
|
|
125
|
-
}
|
|
126
|
-
body.write-mode #raw {
|
|
127
|
-
display: none;
|
|
128
|
-
}
|