@deskwork/studio 0.9.8 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/editorial-skills-catalogue.js +17 -17
- package/dist/lib/editorial-skills-catalogue.js.map +1 -1
- package/dist/pages/content-detail.d.ts.map +1 -1
- package/dist/pages/content-detail.js +13 -25
- package/dist/pages/content-detail.js.map +1 -1
- package/dist/pages/content-detail.ts +14 -24
- package/dist/pages/dashboard.d.ts.map +1 -1
- package/dist/pages/dashboard.js +58 -24
- package/dist/pages/dashboard.js.map +1 -1
- package/dist/pages/dashboard.ts +61 -24
- package/dist/pages/help.js +25 -25
- package/dist/pages/help.js.map +1 -1
- package/dist/pages/help.ts +25 -25
- package/dist/pages/index.d.ts +1 -1
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +129 -83
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/index.ts +145 -84
- package/dist/pages/review.js +3 -3
- package/dist/pages/review.ts +3 -3
- package/dist/pages/shortform.js +1 -1
- package/dist/pages/shortform.ts +1 -1
- package/package.json +2 -2
package/dist/pages/help.ts
CHANGED
|
@@ -145,25 +145,25 @@ function renderTracksSection(): RawHtml {
|
|
|
145
145
|
<p class="eh-track-title">Longform</p>
|
|
146
146
|
<p class="eh-track-sub">Blog posts · dispatches</p>
|
|
147
147
|
<ol class="eh-track-steps">
|
|
148
|
-
<li>Capture the idea.<code>/
|
|
149
|
-
<li>Promote and set keywords.<code>/
|
|
150
|
-
<li>Scaffold the draft file.<code>/
|
|
148
|
+
<li>Capture the idea.<code>/deskwork:add "Title"</code></li>
|
|
149
|
+
<li>Promote and set keywords.<code>/deskwork:plan <slug></code></li>
|
|
150
|
+
<li>Scaffold the draft file.<code>/deskwork:draft <slug></code><span class="note">or click "scaffold" in the studio.</span></li>
|
|
151
151
|
<li>Write the prose. No skill; this is the human doing the work.</li>
|
|
152
|
-
<li>Open a review workflow.<code>/
|
|
153
|
-
<li>Annotate in the browser, then iterate.<code>/
|
|
154
|
-
<li>Approve — writes to the destination file.<code>/
|
|
155
|
-
<li>Mark published. Then commit + push by hand.<code>/
|
|
152
|
+
<li>Open a review workflow.<code>/deskwork:review-start <slug></code></li>
|
|
153
|
+
<li>Annotate in the browser, then iterate.<code>/deskwork:iterate</code></li>
|
|
154
|
+
<li>Approve — writes to the destination file.<code>/deskwork:approve</code></li>
|
|
155
|
+
<li>Mark published. Then commit + push by hand.<code>/deskwork:publish <slug></code></li>
|
|
156
156
|
</ol>
|
|
157
157
|
</div>
|
|
158
158
|
<div class="eh-track">
|
|
159
159
|
<p class="eh-track-title">Shortform</p>
|
|
160
160
|
<p class="eh-track-sub">Social copy · cross-posts</p>
|
|
161
161
|
<ol class="eh-track-steps">
|
|
162
|
-
<li>Draft per platform.<code>/
|
|
162
|
+
<li>Draft per platform.<code>/deskwork:shortform-start <slug> <platform></code><span class="note">Reddit, YouTube, LinkedIn, newsletter.</span></li>
|
|
163
163
|
<li>Review the same way as longform (same page, shortform mode).<span class="note">/dev/editorial-review-shortform</span></li>
|
|
164
|
-
<li>Iterate or approve as with longform.<code>/
|
|
164
|
+
<li>Iterate or approve as with longform.<code>/deskwork:iterate · /deskwork:approve</code></li>
|
|
165
165
|
<li>Post the copy yourself to the platform.</li>
|
|
166
|
-
<li>Record the distribution.<code>/
|
|
166
|
+
<li>Record the distribution.<code>/deskwork:distribute <slug> <platform> <url></code></li>
|
|
167
167
|
</ol>
|
|
168
168
|
</div>
|
|
169
169
|
<div class="eh-track">
|
|
@@ -235,11 +235,11 @@ function renderStudioSection(): RawHtml {
|
|
|
235
235
|
<h4>Calendar panels</h4>
|
|
236
236
|
<p>Five columns: <em>Ideas · Planned · Drafting · Review · Published</em>. Each row shows slug, title, stage-specific metadata (keywords for Planned; dates for Published), a file-present dot, and the active review workflow stamp when one exists.</p>
|
|
237
237
|
<h4>Next-move column</h4>
|
|
238
|
-
<p>Per row, the studio surfaces either a copy-to-clipboard command (for cognitive work that lives in Claude Code) or a one-click button (for mechanical transitions). <code>scaffold →</code> calls <code>/
|
|
238
|
+
<p>Per row, the studio surfaces either a copy-to-clipboard command (for cognitive work that lives in Claude Code) or a one-click button (for mechanical transitions). <code>scaffold →</code> calls <code>/deskwork:draft</code>. <code>publish →</code> calls <code>/deskwork:publish</code>.</p>
|
|
239
239
|
<h4>Shortform coverage matrix</h4>
|
|
240
|
-
<p>For each <em>Published</em> blog, a row of platform cells (reddit, linkedin, youtube, instagram). Shaded cells are covered by a DistributionRecord; empty cells surface the exact <code>/
|
|
240
|
+
<p>For each <em>Published</em> blog, a row of platform cells (reddit, linkedin, youtube, instagram). Shaded cells are covered by a DistributionRecord; empty cells surface the exact <code>/deskwork:shortform-start</code> command to copy.</p>
|
|
241
241
|
<h4>Voice-drift signal</h4>
|
|
242
|
-
<p>A small panel on the right, backed by <code>/
|
|
242
|
+
<p>A small panel on the right, backed by <code>/deskwork:review-report</code>. Names the two voice-skill categories that are producing the most operator corrections. Shows once you have at least five terminal workflows on record.</p>
|
|
243
243
|
</div>
|
|
244
244
|
<div class="eh-panel">
|
|
245
245
|
<p class="eh-panel-head">Secondary surfaces</p>
|
|
@@ -250,7 +250,7 @@ function renderStudioSection(): RawHtml {
|
|
|
250
250
|
<h4>Keyboard</h4>
|
|
251
251
|
<p>In the studio: <kbd>1</kbd>–<kbd>5</kbd> jump to stage columns. In a longform review: <kbd>e</kbd> / double-click toggles edit mode; <kbd>a</kbd> approves; <kbd>i</kbd> iterates; <kbd>r</kbd> rejects; <kbd>j</kbd>/<kbd>k</kbd> step through margin notes; <kbd>?</kbd> shows a full shortcuts overlay.</p>
|
|
252
252
|
<h4>Polling</h4>
|
|
253
|
-
<p>Both routes poll every 8–10 seconds when idle. If the agent runs <code>/
|
|
253
|
+
<p>Both routes poll every 8–10 seconds when idle. If the agent runs <code>/deskwork:iterate</code> in Claude Code, a new draft version shows up in the browser without a reload.</p>
|
|
254
254
|
</div>
|
|
255
255
|
</div>
|
|
256
256
|
</section>`);
|
|
@@ -260,17 +260,17 @@ const RUNTHROUGH_STEPS: ReadonlyArray<{ title: string; op: string; body: RawHtml
|
|
|
260
260
|
{
|
|
261
261
|
title: 'Capture an idea',
|
|
262
262
|
op: 'terminal',
|
|
263
|
-
body: unsafe('<p>You have a title in mind. Run <code>/
|
|
263
|
+
body: unsafe('<p>You have a title in mind. Run <code>/deskwork:add "Your Title"</code>. A row lands in <em>Ideas</em>. Slug is generated; calendar is committed-able.</p>'),
|
|
264
264
|
},
|
|
265
265
|
{
|
|
266
266
|
title: 'Promote to Planned',
|
|
267
267
|
op: 'terminal',
|
|
268
|
-
body: unsafe('<p>The idea has shape. Run <code>/
|
|
268
|
+
body: unsafe('<p>The idea has shape. Run <code>/deskwork:plan <slug></code>. You are prompted for target keywords and topic tags; they land on the calendar row. The studio\'s Planned column now shows it with a tag strip.</p>'),
|
|
269
269
|
},
|
|
270
270
|
{
|
|
271
271
|
title: 'Scaffold the draft',
|
|
272
272
|
op: 'studio or terminal',
|
|
273
|
-
body: unsafe('<p>Click the <code>scaffold →</code> button on the row, or run <code>/
|
|
273
|
+
body: unsafe('<p>Click the <code>scaffold →</code> button on the row, or run <code>/deskwork:draft --site <site> <slug></code>. The blog file appears with frontmatter filled in, and the entry moves to <em>Drafting</em>.</p>'),
|
|
274
274
|
},
|
|
275
275
|
{
|
|
276
276
|
title: 'Write the prose',
|
|
@@ -280,7 +280,7 @@ const RUNTHROUGH_STEPS: ReadonlyArray<{ title: string; op: string; body: RawHtml
|
|
|
280
280
|
{
|
|
281
281
|
title: 'Open the review workflow',
|
|
282
282
|
op: 'terminal',
|
|
283
|
-
body: unsafe('<p><code>/
|
|
283
|
+
body: unsafe('<p><code>/deskwork:review-start <slug></code> prints the dev URL: <code>/dev/editorial-review/<workflow-id></code>. The draft renders inside the review chrome. State: <em>open</em>.</p>'),
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
286
|
title: 'Annotate in the browser',
|
|
@@ -290,12 +290,12 @@ const RUNTHROUGH_STEPS: ReadonlyArray<{ title: string; op: string; body: RawHtml
|
|
|
290
290
|
{
|
|
291
291
|
title: 'Iterate',
|
|
292
292
|
op: 'browser then terminal',
|
|
293
|
-
body: unsafe('<p>Click <em>Iterate</em>. State becomes <em>iterating</em>. Back in Claude Code, run <code>/
|
|
293
|
+
body: unsafe('<p>Click <em>Iterate</em>. State becomes <em>iterating</em>. Back in Claude Code, run <code>/deskwork:iterate</code>. The agent revises using the site voice skill, writes v2 to the journal, flips back to <em>in-review</em>. Polling surfaces v2 in the browser without a reload.</p>'),
|
|
294
294
|
},
|
|
295
295
|
{
|
|
296
296
|
title: 'Approve and write',
|
|
297
297
|
op: 'browser then terminal',
|
|
298
|
-
body: unsafe('<p>Click <em>Approve</em>. State becomes <em>approved</em>. Run <code>/
|
|
298
|
+
body: unsafe('<p>Click <em>Approve</em>. State becomes <em>approved</em>. Run <code>/deskwork:approve</code>. The approved version is written to the blog file on disk; state becomes <em>applied</em>.</p>'),
|
|
299
299
|
},
|
|
300
300
|
{
|
|
301
301
|
title: 'Commit by hand',
|
|
@@ -305,17 +305,17 @@ const RUNTHROUGH_STEPS: ReadonlyArray<{ title: string; op: string; body: RawHtml
|
|
|
305
305
|
{
|
|
306
306
|
title: 'Mark published',
|
|
307
307
|
op: 'studio or terminal',
|
|
308
|
-
body: unsafe('<p>Click <code>publish →</code> on the Drafting or Review row, or run <code>/
|
|
308
|
+
body: unsafe('<p>Click <code>publish →</code> on the Drafting or Review row, or run <code>/deskwork:publish <slug></code>. The entry moves to <em>Published</em>; today\'s date is stamped as <code>datePublished</code>.</p>'),
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
title: 'Cross-post',
|
|
312
312
|
op: 'terminal × platform',
|
|
313
|
-
body: unsafe('<p>For each platform worth posting to: <code>/
|
|
313
|
+
body: unsafe('<p>For each platform worth posting to: <code>/deskwork:shortform-start <slug> <platform></code>. Review it exactly like a longform workflow. Approve, then post it yourself. Record the URL with <code>/deskwork:distribute <slug> <platform> <url></code>.</p>'),
|
|
314
314
|
},
|
|
315
315
|
{
|
|
316
316
|
title: 'Reconcile and reflect',
|
|
317
317
|
op: 'cadence',
|
|
318
|
-
body: unsafe('<p><code>/
|
|
318
|
+
body: unsafe('<p><code>/deskwork:review-report</code> shows which voice-skill principles are drifting. Feed the observations back into the voice skills. The cycle compounds.</p>'),
|
|
319
319
|
},
|
|
320
320
|
];
|
|
321
321
|
|
|
@@ -410,8 +410,8 @@ function renderReferenceSection(): RawHtml {
|
|
|
410
410
|
<h4>First-run tripwires</h4>
|
|
411
411
|
<dl>
|
|
412
412
|
<dt>404 on /dev/*</dt><dd>the dev routes only run when <code>deskwork-studio</code> is up. Start it: <code>npx tsx packages/studio/src/server.ts</code>.</dd>
|
|
413
|
-
<dt>no galley to review</dt><dd>start one with <code>/
|
|
414
|
-
<dt>iterate doesn't trigger</dt><dd>the agent has to run <code>/
|
|
413
|
+
<dt>no galley to review</dt><dd>start one with <code>/deskwork:review-start --site <site> <slug></code>.</dd>
|
|
414
|
+
<dt>iterate doesn't trigger</dt><dd>the agent has to run <code>/deskwork:iterate</code>. The browser button just marks the workflow; Claude does the writing.</dd>
|
|
415
415
|
</dl>
|
|
416
416
|
</div>
|
|
417
417
|
</div>
|
package/dist/pages/index.d.ts
CHANGED
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
* Read-only — links to existing routes only. No editing capability here.
|
|
18
18
|
*/
|
|
19
19
|
import type { StudioContext } from '../routes/api.ts';
|
|
20
|
-
export declare function renderStudioIndex(
|
|
20
|
+
export declare function renderStudioIndex(ctx: StudioContext): string;
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA8NtD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA8B5D"}
|
package/dist/pages/index.js
CHANGED
|
@@ -16,92 +16,137 @@
|
|
|
16
16
|
*
|
|
17
17
|
* Read-only — links to existing routes only. No editing capability here.
|
|
18
18
|
*/
|
|
19
|
+
import { readWorkflows } from '@deskwork/core/review/pipeline';
|
|
19
20
|
import { html, unsafe } from "./html.js";
|
|
20
21
|
import { layout } from "./layout.js";
|
|
21
22
|
import { renderEditorialFolio } from "./chrome.js";
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Pick the workflow that should be the default Longform-reviews target —
|
|
25
|
+
* the most-recent open longform workflow (in-review or open). Returns
|
|
26
|
+
* null when no candidate exists; the caller falls back to the dashboard's
|
|
27
|
+
* Review section anchor.
|
|
28
|
+
*/
|
|
29
|
+
function pickDefaultLongformWorkflow(workflows) {
|
|
30
|
+
const candidates = workflows
|
|
31
|
+
.filter((w) => w.contentKind === 'longform')
|
|
32
|
+
.filter((w) => w.state === 'in-review' || w.state === 'open')
|
|
33
|
+
.slice()
|
|
34
|
+
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
35
|
+
return candidates[0] ?? null;
|
|
36
|
+
}
|
|
37
|
+
function buildSections(ctx) {
|
|
38
|
+
const workflows = (() => {
|
|
39
|
+
try {
|
|
40
|
+
return readWorkflows(ctx.projectRoot, ctx.config);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
})();
|
|
46
|
+
const longformDefault = pickDefaultLongformWorkflow(workflows);
|
|
47
|
+
// Issue #107: III links to the most-recent in-review longform when
|
|
48
|
+
// one exists, else falls back to the dashboard's Review section
|
|
49
|
+
// anchor (`#stage-review`, mounted in sub-phase D). The visual
|
|
50
|
+
// template hint stays alongside the link so adopters still see the
|
|
51
|
+
// URL shape — `<slug>` placeholder shown in red-pencil italic.
|
|
52
|
+
const longformLinkHref = longformDefault !== null
|
|
53
|
+
? `/dev/editorial-review/${longformDefault.id}`
|
|
54
|
+
: '/dev/editorial-studio#stage-review';
|
|
55
|
+
return [
|
|
56
|
+
{
|
|
57
|
+
ornament: '¶',
|
|
58
|
+
name: 'Pipeline',
|
|
59
|
+
count: 'i. — 1 surface',
|
|
60
|
+
entries: [
|
|
61
|
+
{
|
|
62
|
+
numeral: 'I',
|
|
63
|
+
titleHtml: 'Dashboard',
|
|
64
|
+
titleText: 'Dashboard',
|
|
65
|
+
route: '/dev/editorial-studio',
|
|
66
|
+
desc: 'Press-check. The calendar across all sites; awaiting press; recent proofs; voice-drift signal.',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
ornament: '¶',
|
|
72
|
+
name: 'Review desk',
|
|
73
|
+
count: 'ii.–iii. — 2 surfaces',
|
|
74
|
+
entries: [
|
|
75
|
+
{
|
|
76
|
+
numeral: 'II',
|
|
77
|
+
titleHtml: 'Shortform reviews',
|
|
78
|
+
titleText: 'Shortform reviews',
|
|
79
|
+
route: '/dev/editorial-review-shortform',
|
|
80
|
+
desc: 'Cross-platform copy desk. Reddit, LinkedIn, YouTube, Instagram — galley slips, one per platform.',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
numeral: 'III',
|
|
84
|
+
titleHtml: 'Longform reviews',
|
|
85
|
+
titleText: 'Longform reviews',
|
|
86
|
+
route: '/dev/editorial-review/<slug>',
|
|
87
|
+
linkHref: longformLinkHref,
|
|
88
|
+
template: { prefix: '/dev/editorial-review/', placeholder: '<slug>' },
|
|
89
|
+
desc: 'Per-entry margin notes, decisions, iterate flow.',
|
|
90
|
+
hint: 'entry-by-entry',
|
|
91
|
+
postHint: longformDefault !== null
|
|
92
|
+
? `Defaults to the most-recent in-review longform (${longformDefault.slug}). Or reach via the Dashboard or Content view.`
|
|
93
|
+
: 'Defaults to the dashboard\'s Review section. Open a longform workflow to populate the per-entry deep-link.',
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
ornament: '¶',
|
|
99
|
+
name: 'Browse',
|
|
100
|
+
count: 'iv.–v. — 2 surfaces',
|
|
101
|
+
entries: [
|
|
102
|
+
{
|
|
103
|
+
numeral: 'IV',
|
|
104
|
+
titleHtml: 'Content view',
|
|
105
|
+
titleText: 'Content view',
|
|
106
|
+
route: '/dev/content',
|
|
107
|
+
desc: 'The shape of the work. A drillable tree of nodes; click any to read its head matter and browse its scrapbook.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
numeral: 'V',
|
|
111
|
+
titleHtml: 'Scrapbook',
|
|
112
|
+
titleText: 'Scrapbook',
|
|
113
|
+
route: '/dev/scrapbook/<site>/<path>',
|
|
114
|
+
// Issue #107: scrapbook is reached by drilling into a content
|
|
115
|
+
// node. Default link points at the content view; the URL
|
|
116
|
+
// template hint stays so adopters see the addressing shape.
|
|
117
|
+
linkHref: '/dev/content',
|
|
118
|
+
template: { prefix: '/dev/scrapbook/', placeholder: '<site>/<path>' },
|
|
119
|
+
desc: 'Research, receipts, working notes. Addressed by hierarchical path; secret items appear in their own section.',
|
|
120
|
+
hint: 'path-addressed',
|
|
121
|
+
postHint: "Reach via the Content view's per-node drawer, or address directly.",
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
ornament: '¶',
|
|
127
|
+
name: 'Reference',
|
|
128
|
+
count: 'vi. — 1 surface',
|
|
129
|
+
entries: [
|
|
130
|
+
{
|
|
131
|
+
numeral: 'VI',
|
|
132
|
+
titleHtml: "The Compositor's <em>Manual</em>",
|
|
133
|
+
titleText: "The Compositor's Manual",
|
|
134
|
+
route: '/dev/editorial-help',
|
|
135
|
+
desc: 'The workflow, the skill catalogue, the names of the things — read once, return when the work asks.',
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
}
|
|
100
141
|
function renderEntryTitle(entry) {
|
|
101
|
-
|
|
142
|
+
// Explicit linkHref wins. Otherwise: non-templated entries link to
|
|
143
|
+
// their route; templated entries with no fallback render as plain
|
|
144
|
+
// text (the route is templated, can't be linked verbatim).
|
|
145
|
+
const href = entry.linkHref ?? (entry.template ? null : entry.route);
|
|
146
|
+
if (href === null) {
|
|
102
147
|
return html `<span class="er-toc-entry__title">${unsafe(entry.titleHtml)}</span>`;
|
|
103
148
|
}
|
|
104
|
-
return html `<a class="er-toc-entry__title" href="${
|
|
149
|
+
return html `<a class="er-toc-entry__title" href="${href}">${unsafe(entry.titleHtml)}</a>`;
|
|
105
150
|
}
|
|
106
151
|
function renderEntryRoute(entry) {
|
|
107
152
|
if (entry.template) {
|
|
@@ -142,7 +187,8 @@ function renderSection(section) {
|
|
|
142
187
|
</ol>
|
|
143
188
|
</section>`);
|
|
144
189
|
}
|
|
145
|
-
export function renderStudioIndex(
|
|
190
|
+
export function renderStudioIndex(ctx) {
|
|
191
|
+
const sections = buildSections(ctx);
|
|
146
192
|
const body = html `
|
|
147
193
|
${renderEditorialFolio('index', 'index of the press')}
|
|
148
194
|
<main class="er-toc-page">
|
|
@@ -154,9 +200,9 @@ export function renderStudioIndex(_ctx) {
|
|
|
154
200
|
Begin where the work is.
|
|
155
201
|
</p>
|
|
156
202
|
</header>
|
|
157
|
-
${
|
|
203
|
+
${sections.map(renderSection)}
|
|
158
204
|
<footer class="er-toc-colophon">
|
|
159
|
-
Pressed in the deskwork studio
|
|
205
|
+
Pressed in the deskwork studio.<br>
|
|
160
206
|
<span class="er-toc-colophon__rule"></span>
|
|
161
207
|
</footer>
|
|
162
208
|
</main>`;
|
package/dist/pages/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAyCnD;;;;;GAKG;AACH,SAAS,2BAA2B,CAClC,SAAuC;IAEvC,MAAM,UAAU,GAAG,SAAS;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;SAC5D,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,GAAkB;IACvC,MAAM,SAAS,GAAiC,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,eAAe,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAC/D,mEAAmE;IACnE,gEAAgE;IAChE,+DAA+D;IAC/D,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,gBAAgB,GACpB,eAAe,KAAK,IAAI;QACtB,CAAC,CAAC,yBAAyB,eAAe,CAAC,EAAE,EAAE;QAC/C,CAAC,CAAC,oCAAoC,CAAC;IAE3C,OAAO;QACL;YACE,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,GAAG;oBACZ,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,WAAW;oBACtB,KAAK,EAAE,uBAAuB;oBAC9B,IAAI,EAAE,gGAAgG;iBACvG;aACF;SACF;QACD;YACE,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,mBAAmB;oBAC9B,SAAS,EAAE,mBAAmB;oBAC9B,KAAK,EAAE,iCAAiC;oBACxC,IAAI,EAAE,kGAAkG;iBACzG;gBACD;oBACE,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,kBAAkB;oBAC7B,SAAS,EAAE,kBAAkB;oBAC7B,KAAK,EAAE,8BAA8B;oBACrC,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE;oBACrE,IAAI,EAAE,kDAAkD;oBACxD,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EACN,eAAe,KAAK,IAAI;wBACtB,CAAC,CAAC,mDAAmD,eAAe,CAAC,IAAI,gDAAgD;wBACzH,CAAC,CAAC,4GAA4G;iBACnH;aACF;SACF;QACD;YACE,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,cAAc;oBACzB,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,+GAA+G;iBACtH;gBACD;oBACE,OAAO,EAAE,GAAG;oBACZ,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,WAAW;oBACtB,KAAK,EAAE,8BAA8B;oBACrC,8DAA8D;oBAC9D,yDAAyD;oBACzD,4DAA4D;oBAC5D,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE;oBACrE,IAAI,EAAE,8GAA8G;oBACpH,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,oEAAoE;iBAC/E;aACF;SACF;QACD;YACE,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,kCAAkC;oBAC7C,SAAS,EAAE,yBAAyB;oBACpC,KAAK,EAAE,qBAAqB;oBAC5B,IAAI,EAAE,oGAAoG;iBAC3G;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,mEAAmE;IACnE,kEAAkE;IAClE,2DAA2D;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA,qCAAqC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAA,wCAAwC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5F,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA,iDAAiD,KAAK,CAAC,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,cAAc,CAAC;IACnI,CAAC;IACD,OAAO,IAAI,CAAA,qCAAqC,KAAK,CAAC,KAAK,SAAS,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;QACrB,CAAC,CAAC,IAAI,CAAA,qCAAqC,KAAK,CAAC,IAAI,SAAS;QAC9D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ;QACzB,CAAC,CAAC,IAAI,CAAA,QAAQ,KAAK,CAAC,QAAQ,OAAO;QACnC,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,IAAI,CAAA,iCAAiC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7F,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,OAAO,MAAM,CAAC,IAAI,CAAA;;;0CAGsB,KAAK,CAAC,OAAO;UAC7C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;UAC/B,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;QAEjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;UAC5B,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,OAAqB;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAA;;;sDAGkC,OAAO,CAAC,QAAQ;kDACpB,OAAO,CAAC,IAAI;mDACX,OAAO,CAAC,KAAK;;;UAGtD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;;eAE3B,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAkB;IAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAA;MACb,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,CAAC;;;;;;;;;;QAUjD,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;;;;;YAKvB,CAAC;IAEX,OAAO,MAAM,CAAC;QACZ,KAAK,EAAE,0BAA0B;QACjC,QAAQ,EAAE;YACR,kCAAkC;YAClC,+BAA+B;SAChC;QACD,SAAS,EAAE,yBAAyB;QACpC,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,EAAE;KAClB,CAAC,CAAC;AACL,CAAC"}
|