@kitlangton/knobs 0.4.0-next.4 → 0.4.0-next.6
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/README.md +30 -17
- package/dist/dev/{chunk-0w1xk9jc.js → chunk-dyq4m24m.js} +3 -3
- package/dist/dev/{chunk-rem3qrhz.js → chunk-nhz9en4k.js} +2 -2
- package/dist/dev/{chunk-76frnh2j.js → chunk-ya44t7z5.js} +65 -12
- package/dist/dev/index.js +3 -3
- package/dist/panel.js +67 -14
- package/dist/themes.js +3 -3
- package/dist/types/tokens/schema.d.ts +3 -3
- package/dist/types/ui/compare-css.d.ts +1 -1
- package/dist/types/ui/compare-gpu.d.ts +6 -1
- package/dist/types/ui/compare-model.d.ts +55 -1
- package/dist/types/ui/compare.d.ts +3 -2
- package/dist/types/ui/diff.d.ts +4 -5
- package/dist/types/ui/history-css.d.ts +1 -1
- package/dist/types/ui/history-model.d.ts +15 -2
- package/dist/types/ui/history.d.ts +5 -0
- package/dist/types/ui/index.d.ts +4 -2
- package/dist/types/ui/player-css.d.ts +1 -0
- package/dist/types/ui/player.d.ts +60 -0
- package/dist/types/ui/timeline-model.d.ts +4 -0
- package/dist/types/ui/timeline.d.ts +10 -3
- package/dist/types/ui/walkthrough-annotations.d.ts +42 -0
- package/dist/types/ui/walkthrough-blocks.d.ts +24 -4
- package/dist/types/ui/walkthrough-model.d.ts +78 -10
- package/dist/types/ui/walkthrough.d.ts +14 -2
- package/dist/ui-react.js +2170 -512
- package/dist/ui-solid.js +2182 -524
- package/dist/ui.js +6184 -4354
- package/package.json +1 -1
|
@@ -48,10 +48,15 @@ export interface TimelineOptions extends UiLook {
|
|
|
48
48
|
/**
|
|
49
49
|
* `"editor"` (the default): a ruler with labels over a lane of markers to add, drag and name,
|
|
50
50
|
* zoomed and panned by the wheel. `"lane"`: one slim lane under a compare or a video, with ticks
|
|
51
|
-
* and no labels, markers as faint chapter ticks (the current one in text colour)
|
|
52
|
-
* edit, and
|
|
51
|
+
* and no labels, markers as faint chapter ticks (the current one in text colour) and nothing to
|
|
52
|
+
* edit. A pinch, ⌘/ctrl-wheel or = and - zoom it around the pointer, a sideways scroll pans it,
|
|
53
|
+
* both following the hand 1:1; a double-click or 0 fits it again. An up-and-down wheel is left
|
|
54
|
+
* to the page. `"line"`: a player's progress, a single thin line under a video or a compare (no
|
|
55
|
+
* play button: the media and Space play), one segment per chapter with a small gap between,
|
|
56
|
+
* each filling as the time passes it, thicker under the pointer; click or drag anywhere on it
|
|
57
|
+
* to seek, 1:1, and the chapter and time under the pointer show over it. Zooms as a lane does.
|
|
53
58
|
*/
|
|
54
|
-
readonly variant?: "editor" | "lane";
|
|
59
|
+
readonly variant?: "editor" | "lane" | "line";
|
|
55
60
|
readonly label?: string;
|
|
56
61
|
/** The time moved: scrubbed, stepped, jumped, played (every frame) or set from code. */
|
|
57
62
|
onSeek?(time: number, source: SeekSource): void;
|
|
@@ -117,3 +122,5 @@ export interface Timeline {
|
|
|
117
122
|
dispose(): void;
|
|
118
123
|
}
|
|
119
124
|
export declare function timeline(container: HTMLElement, options: TimelineOptions): Timeline;
|
|
125
|
+
export declare const PLAY = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M5 3.6v8.8c0 .5.5.8.9.5l6.6-4.4c.4-.3.4-.8 0-1L5.9 3.1c-.4-.3-.9 0-.9.5Z\" fill=\"currentColor\"/></svg>";
|
|
126
|
+
export declare const PAUSE = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><rect x=\"4\" y=\"3.2\" width=\"2.8\" height=\"9.6\" rx=\"1\" fill=\"currentColor\"/><rect x=\"9.2\" y=\"3.2\" width=\"2.8\" height=\"9.6\" rx=\"1\" fill=\"currentColor\"/></svg>";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { WalkthroughAnnotation } from "./walkthrough-model.js";
|
|
2
|
+
export interface Rect {
|
|
3
|
+
readonly x: number;
|
|
4
|
+
readonly y: number;
|
|
5
|
+
readonly w: number;
|
|
6
|
+
readonly h: number;
|
|
7
|
+
}
|
|
8
|
+
/** The part of the picture in view, 0–1 (`{ u: 0, v: 0, w: 1, h: 1 }` is all of it). */
|
|
9
|
+
export interface View {
|
|
10
|
+
readonly u: number;
|
|
11
|
+
readonly v: number;
|
|
12
|
+
readonly w: number;
|
|
13
|
+
readonly h: number;
|
|
14
|
+
}
|
|
15
|
+
/** Where the picture sits now: its rects in the layer (one, or a compare's two), view and time. */
|
|
16
|
+
export interface Placement {
|
|
17
|
+
readonly rects: readonly Rect[];
|
|
18
|
+
readonly view?: View;
|
|
19
|
+
readonly time?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface AnnotationLayer {
|
|
22
|
+
readonly element: HTMLElement;
|
|
23
|
+
/** Places the marks again: after a resize, a zoom, a seek, a mode change. */
|
|
24
|
+
update(): void;
|
|
25
|
+
dispose(): void;
|
|
26
|
+
}
|
|
27
|
+
/** Whether a mark shows at `time` (always without `at`, or without a time). */
|
|
28
|
+
export declare const showsAt: (a: WalkthroughAnnotation, time: number | undefined) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* A mark's box in the layer, in px, for a picture at `rect` showing `view` of itself; null when
|
|
31
|
+
* it's out of view.
|
|
32
|
+
*/
|
|
33
|
+
export declare function placeMark(a: WalkthroughAnnotation, rect: Rect, view?: View): Rect | null;
|
|
34
|
+
/** Whether a page's annotations show. */
|
|
35
|
+
export declare const annotationsOn: (scope: HTMLElement) => boolean;
|
|
36
|
+
/** Shows or hides every annotation on a page (or a lone slot); its eye buttons follow. */
|
|
37
|
+
export declare function setAnnotations(scope: HTMLElement, on: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Draws `list` over `host` (positioned, the picture's box or a compare's stage), placing it with
|
|
40
|
+
* `place()`; the eye button goes in `corner` (the host by default).
|
|
41
|
+
*/
|
|
42
|
+
export declare function annotationLayer(host: HTMLElement, list: readonly WalkthroughAnnotation[], place: () => Placement, corner?: HTMLElement): AnnotationLayer;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ContextEvent, type WalkChapter, type WalkMedia } from "./walkthrough-model.js";
|
|
2
2
|
/** The glyphs the blocks draw. */
|
|
3
3
|
export declare const GLYPH: {
|
|
4
|
-
go: string;
|
|
5
4
|
caret: string;
|
|
6
5
|
};
|
|
7
6
|
/** How media reach the page's steps: `step` on a history event, a stack item or a table cell. */
|
|
@@ -22,8 +21,12 @@ export interface Block {
|
|
|
22
21
|
kind: string;
|
|
23
22
|
};
|
|
24
23
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Makes a whole row go to the step a ref names (a click away from its links, Enter or Space when
|
|
26
|
+
* it has focus); nothing trails it, so rows with and without a step line up.
|
|
27
|
+
*/
|
|
28
|
+
export declare function rowLink(row: HTMLElement, ref: string | undefined, steps: StepLinks | undefined): void;
|
|
29
|
+
/** A history through `history()`: lanes of spans over a date axis, or the older groups of events. */
|
|
27
30
|
export declare function mountHistory(host: HTMLElement, m: Extract<WalkMedia, {
|
|
28
31
|
kind: "history";
|
|
29
32
|
}>, steps: StepLinks | undefined): Block;
|
|
@@ -55,8 +58,25 @@ export interface Disclosure {
|
|
|
55
58
|
}
|
|
56
59
|
export declare function disclosure(host: HTMLElement, options: {
|
|
57
60
|
label: string;
|
|
58
|
-
count?: number;
|
|
59
61
|
open?: boolean;
|
|
60
62
|
content: HTMLElement;
|
|
61
63
|
}): Disclosure;
|
|
64
|
+
declare const PR_STATE: {
|
|
65
|
+
readonly merged: "Merged";
|
|
66
|
+
readonly open: "Open";
|
|
67
|
+
readonly draft: "Draft";
|
|
68
|
+
readonly closed: "Closed";
|
|
69
|
+
};
|
|
70
|
+
export interface PRInfo {
|
|
71
|
+
readonly state?: keyof typeof PR_STATE;
|
|
72
|
+
readonly title?: string;
|
|
73
|
+
readonly href?: string;
|
|
74
|
+
}
|
|
75
|
+
/** A pull request as a small chip: its state's icon and number, the title and state on hover. */
|
|
76
|
+
export declare function prChip(doc: Document, n: string, pr: PRInfo): HTMLElement;
|
|
77
|
+
/**
|
|
78
|
+
* Turns the pull requests in some rendered prose into chips: links to one whose words are its
|
|
79
|
+
* number or URL, and bare `#57148`s the page can resolve. Code, buttons and media stay as they are.
|
|
80
|
+
*/
|
|
81
|
+
export declare function linkPRs(root: HTMLElement, find: (n: string) => PRInfo | null): void;
|
|
62
82
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CompareMode } from "./compare-model.js";
|
|
2
2
|
import type { DiffSource } from "./diff-model.js";
|
|
3
|
+
import type { HistoryData, HistoryEvent } from "./history-model.js";
|
|
3
4
|
/** Where a PR or topic stands, as the agent sees it: a chip beside its title. */
|
|
4
5
|
export type WalkthroughStatus = "ready" | "needs-taste" | "draft" | "blocked" | "merged" | (string & {});
|
|
5
6
|
/** A picture or video, by URL. */
|
|
@@ -89,6 +90,22 @@ export interface WalkthroughTableColumn {
|
|
|
89
90
|
export type WalkthroughTableRow = Readonly<Record<string, WalkthroughTableCell>> | {
|
|
90
91
|
readonly cells: Readonly<Record<string, WalkthroughTableCell>>;
|
|
91
92
|
};
|
|
93
|
+
/**
|
|
94
|
+
* A mark on a picture drawing the eye to what matters: a ring round a box, a dot or an arrow at a
|
|
95
|
+
* point, with a small label. In 0–1 of the picture (`x`, `y` the box's top-left or the point).
|
|
96
|
+
*/
|
|
97
|
+
export interface WalkthroughAnnotation {
|
|
98
|
+
readonly x: number;
|
|
99
|
+
readonly y: number;
|
|
100
|
+
/** A box's size; left out, it's a point. */
|
|
101
|
+
readonly w?: number;
|
|
102
|
+
readonly h?: number;
|
|
103
|
+
readonly label?: string;
|
|
104
|
+
/** Seconds it shows between, on a video or compare; always, left out. */
|
|
105
|
+
readonly at?: readonly [number, number];
|
|
106
|
+
/** `"box"` where it has a size, else `"dot"`. */
|
|
107
|
+
readonly shape?: "box" | "dot" | "arrow";
|
|
108
|
+
}
|
|
92
109
|
/** A stretch of a video: a pill under it, and a marker on its timeline. */
|
|
93
110
|
export interface WalkthroughChapter {
|
|
94
111
|
readonly id?: string;
|
|
@@ -115,6 +132,8 @@ export type WalkthroughMedia = string | {
|
|
|
115
132
|
readonly strip?: boolean;
|
|
116
133
|
/** Pills under it that seek, and markers on its timeline. */
|
|
117
134
|
readonly chapters?: readonly WalkthroughChapter[];
|
|
135
|
+
/** Marks on the pictures, on both sides (and under a zoom). */
|
|
136
|
+
readonly annotations?: readonly WalkthroughAnnotation[];
|
|
118
137
|
} | {
|
|
119
138
|
readonly kind: "video";
|
|
120
139
|
readonly src: string;
|
|
@@ -127,12 +146,23 @@ export type WalkthroughMedia = string | {
|
|
|
127
146
|
readonly captions?: string;
|
|
128
147
|
/** Another name for `captions`. */
|
|
129
148
|
readonly captionsSrc?: string;
|
|
149
|
+
/** Marks on the picture. */
|
|
150
|
+
readonly annotations?: readonly WalkthroughAnnotation[];
|
|
130
151
|
} | {
|
|
131
152
|
readonly kind: "history";
|
|
132
|
-
/**
|
|
153
|
+
/** Lanes of dated spans over one axis (`history()`'s shape)… */
|
|
154
|
+
readonly lanes?: HistoryData["lanes"];
|
|
155
|
+
readonly bands?: HistoryData["bands"];
|
|
156
|
+
readonly states?: HistoryData["states"];
|
|
157
|
+
readonly axis?: HistoryData["axis"];
|
|
158
|
+
/** …dated events (on the lanes, or one run of them in the older shape)… */
|
|
159
|
+
readonly events?: readonly (WalkthroughHistoryEvent | HistoryEvent)[];
|
|
160
|
+
/** …or the older groups of events under quiet headings. */
|
|
133
161
|
readonly groups?: readonly WalkthroughHistoryGroup[];
|
|
134
|
-
/**
|
|
135
|
-
readonly
|
|
162
|
+
/** Its accessible name. */
|
|
163
|
+
readonly label?: string;
|
|
164
|
+
/** The event types marked from the start (releases and deletions), or `"all"`. */
|
|
165
|
+
readonly marks?: readonly string[] | "all";
|
|
136
166
|
} | {
|
|
137
167
|
readonly kind: "stack";
|
|
138
168
|
/** The branch the stack lands on ("dev"); else the one most items merge into. */
|
|
@@ -157,6 +187,8 @@ export type WalkthroughMedia = string | {
|
|
|
157
187
|
readonly src: string;
|
|
158
188
|
readonly label?: string;
|
|
159
189
|
readonly alt?: string;
|
|
190
|
+
/** Marks on the picture. */
|
|
191
|
+
readonly annotations?: readonly WalkthroughAnnotation[];
|
|
160
192
|
} | {
|
|
161
193
|
readonly kind: "diff";
|
|
162
194
|
/** `git diff` / `git show` output. */
|
|
@@ -217,7 +249,10 @@ export interface WalkthroughStep {
|
|
|
217
249
|
readonly media?: WalkthroughMedia | readonly WalkthroughMedia[];
|
|
218
250
|
/** Media side by side, this many to a row where there's room; one under another by default. */
|
|
219
251
|
readonly columns?: 1 | 2 | 3;
|
|
220
|
-
/**
|
|
252
|
+
/**
|
|
253
|
+
* The rest, folded away under the caption behind "More" (Markdown; blank lines start new
|
|
254
|
+
* paragraphs). Keep the title the claim and the caption one sentence; everything else goes here.
|
|
255
|
+
*/
|
|
221
256
|
readonly more?: string;
|
|
222
257
|
/** A taste test: Kit picks one. */
|
|
223
258
|
readonly options?: readonly WalkthroughOption[];
|
|
@@ -242,8 +277,11 @@ export interface WalkthroughSection {
|
|
|
242
277
|
* `link` is a pull request, or the doc's `kickers` noun), your own words, or `false` for none.
|
|
243
278
|
*/
|
|
244
279
|
readonly kicker?: string | false;
|
|
280
|
+
/** A chip on its meta line ("needs-taste" → Needs taste), with `review: true` only. */
|
|
245
281
|
readonly status?: WalkthroughStatus;
|
|
246
282
|
readonly summary?: string;
|
|
283
|
+
/** The rest, folded away under the summary behind "More" (Markdown). */
|
|
284
|
+
readonly more?: string;
|
|
247
285
|
readonly steps: readonly WalkthroughStep[];
|
|
248
286
|
}
|
|
249
287
|
export interface WalkthroughMeta {
|
|
@@ -281,6 +319,8 @@ export interface WalkthroughDoc {
|
|
|
281
319
|
readonly id: string;
|
|
282
320
|
readonly title: string;
|
|
283
321
|
readonly summary?: string;
|
|
322
|
+
/** The rest, folded away under the summary behind "More" (Markdown). */
|
|
323
|
+
readonly more?: string;
|
|
284
324
|
/** Facts beside the title: branch, commit, date… */
|
|
285
325
|
readonly meta?: Readonly<Record<string, string>> | readonly WalkthroughMeta[];
|
|
286
326
|
/** Relative media URLs resolve against this. */
|
|
@@ -300,8 +340,22 @@ export interface WalkthroughDoc {
|
|
|
300
340
|
readonly kickers?: "pr" | {
|
|
301
341
|
readonly noun: string;
|
|
302
342
|
} | false;
|
|
343
|
+
/**
|
|
344
|
+
* The pull requests the page mentions, by number: their state and title. A `#57148` in a title,
|
|
345
|
+
* caption or summary, a link to a pull request, and a section's PR `link` read as a small chip
|
|
346
|
+
* (its state's icon and number; the title on hover).
|
|
347
|
+
*/
|
|
348
|
+
readonly prs?: Readonly<Record<string, WalkthroughPR>>;
|
|
349
|
+
/** `owner/name` on GitHub, so a bare `#57148` links to its pull request. */
|
|
350
|
+
readonly repo?: string;
|
|
303
351
|
readonly sections: readonly WalkthroughSection[];
|
|
304
352
|
}
|
|
353
|
+
export interface WalkthroughPR {
|
|
354
|
+
readonly state?: "merged" | "open" | "draft" | "closed";
|
|
355
|
+
readonly title?: string;
|
|
356
|
+
/** Its URL, when neither `repo` nor a link on the page gives it. */
|
|
357
|
+
readonly href?: string;
|
|
358
|
+
}
|
|
305
359
|
type CompareMedia = Extract<WalkthroughMedia, {
|
|
306
360
|
kind: "compare";
|
|
307
361
|
}>;
|
|
@@ -315,11 +369,6 @@ export interface WalkChapter {
|
|
|
315
369
|
readonly start: number;
|
|
316
370
|
readonly end?: number;
|
|
317
371
|
}
|
|
318
|
-
export interface WalkHistoryGroup {
|
|
319
|
-
readonly heading?: string;
|
|
320
|
-
readonly summary?: string;
|
|
321
|
-
readonly events: readonly WalkthroughHistoryEvent[];
|
|
322
|
-
}
|
|
323
372
|
/** A stack's item filled in: its PR as `#123`, its branch split, `step` for `stepId`. */
|
|
324
373
|
export interface WalkStackItem {
|
|
325
374
|
readonly pr: string;
|
|
@@ -366,7 +415,9 @@ export type WalkMedia = Exclude<WalkthroughMedia, string | {
|
|
|
366
415
|
readonly chapters?: readonly WalkChapter[];
|
|
367
416
|
}) | {
|
|
368
417
|
readonly kind: "history";
|
|
369
|
-
readonly
|
|
418
|
+
readonly data: HistoryData;
|
|
419
|
+
readonly label?: string;
|
|
420
|
+
readonly marks?: readonly string[] | "all";
|
|
370
421
|
} | {
|
|
371
422
|
readonly kind: "stack";
|
|
372
423
|
readonly base?: string;
|
|
@@ -417,6 +468,7 @@ export interface WalkSection {
|
|
|
417
468
|
readonly kicker?: string;
|
|
418
469
|
readonly status?: WalkthroughStatus;
|
|
419
470
|
readonly summary?: string;
|
|
471
|
+
readonly more?: string;
|
|
420
472
|
readonly steps: readonly WalkStep[];
|
|
421
473
|
}
|
|
422
474
|
export interface WalkVerdict {
|
|
@@ -440,6 +492,7 @@ export interface WalkPage {
|
|
|
440
492
|
readonly id: string;
|
|
441
493
|
readonly title: string;
|
|
442
494
|
readonly summary?: string;
|
|
495
|
+
readonly more?: string;
|
|
443
496
|
readonly meta: readonly WalkthroughMeta[];
|
|
444
497
|
readonly verdicts: readonly WalkVerdict[];
|
|
445
498
|
readonly sections: readonly WalkSection[];
|
|
@@ -447,6 +500,10 @@ export interface WalkPage {
|
|
|
447
500
|
readonly steps: readonly WalkStep[];
|
|
448
501
|
/** Updates and answers, newest first. */
|
|
449
502
|
readonly feed: readonly FeedItem[];
|
|
503
|
+
/** The pull requests the page knows, by number, each with its URL when one is known. */
|
|
504
|
+
readonly prs: Readonly<Record<string, WalkthroughPR>>;
|
|
505
|
+
/** `owner/name`, when the doc gave one. */
|
|
506
|
+
readonly repo?: string;
|
|
450
507
|
}
|
|
451
508
|
export declare const DEFAULT_VERDICTS: readonly ["ship", "change", "unsure"];
|
|
452
509
|
/** A URL-safe id from a title: "Retired model (HTTP 410)" → "retired-model-http-410". */
|
|
@@ -459,6 +516,13 @@ export declare const mediaOf: (src: string) => WalkMedia;
|
|
|
459
516
|
export declare function parseAspect(aspect: number | string | undefined): number | undefined;
|
|
460
517
|
/** Media filled in: a bare URL as a video or image, sources resolved against `base`. */
|
|
461
518
|
export declare function fillMedia(m: WalkthroughMedia, base?: string): WalkMedia;
|
|
519
|
+
/**
|
|
520
|
+
* What `history()` draws: the lanes shape as written, or the older groups (`rows` read as
|
|
521
|
+
* `events`, bare `events` as one group first) for it to lay on the code lane.
|
|
522
|
+
*/
|
|
523
|
+
export declare function historyData(m: Extract<WalkthroughMedia, {
|
|
524
|
+
kind: "history";
|
|
525
|
+
}>): HistoryData;
|
|
462
526
|
/** `"head → base"` (or `->`, `=>`, `⇒`) as its two branches; one name is the head alone. */
|
|
463
527
|
export declare function parseBranch(branch: string | undefined): {
|
|
464
528
|
head?: string;
|
|
@@ -514,6 +578,10 @@ export declare function linkLabel(href: string): string;
|
|
|
514
578
|
* ask, options lettered, media URLs resolved against `base`, and the verdicts labelled.
|
|
515
579
|
*/
|
|
516
580
|
export declare function normalizeWalkthrough(doc: WalkthroughDoc): WalkPage;
|
|
581
|
+
/** The number in a pull request's URL (`…/pull/57148`), or null. */
|
|
582
|
+
export declare const prNumber: (href: string) => string | null;
|
|
583
|
+
/** A pull request by number: what the page knows, or (with a repo) its URL. */
|
|
584
|
+
export declare function findPR(prs: Readonly<Record<string, WalkthroughPR>>, n: string, repo?: string): WalkthroughPR | null;
|
|
517
585
|
/** Whether a link is a pull (or merge) request: GitHub's `/pull/123`, GitLab's merge requests. */
|
|
518
586
|
export declare const isPullRequest: (href: string) => boolean;
|
|
519
587
|
/**
|
|
@@ -11,6 +11,8 @@ export interface TasteTestOptions extends UiLook {
|
|
|
11
11
|
readonly lazy?: boolean;
|
|
12
12
|
/** The page's steps, for media that name one. */
|
|
13
13
|
readonly steps?: StepLinks;
|
|
14
|
+
/** Options can be picked (on by default); off, they sit side by side under their labels. */
|
|
15
|
+
readonly pickable?: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface TasteTest {
|
|
16
18
|
readonly element: HTMLElement;
|
|
@@ -35,8 +37,18 @@ export interface WalkthroughOptions extends UiLook {
|
|
|
35
37
|
readonly onFeedback?: (feedback: WalkthroughFeedback) => void;
|
|
36
38
|
/** The page's keys (on by default). */
|
|
37
39
|
readonly keys?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Kit's review tools (off by default): progress, notes (typed, voice, ink) and their bar,
|
|
42
|
+
* Copy feedback, the key hints, and picking between options. Off, the page only shows: options
|
|
43
|
+
* sit side by side, and j / k, f and the arrows still work.
|
|
44
|
+
*/
|
|
45
|
+
readonly review?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* The contents and progress rail (on by default): sticky at the page's left edge, the column
|
|
48
|
+
* centred in the room beside it; `"right"` mirrors it. Under 960 px it hides (with review
|
|
49
|
+
* on, a bar on top keeps the progress and the export).
|
|
50
|
+
*/
|
|
51
|
+
readonly rail?: boolean | "left" | "right";
|
|
40
52
|
/** Each step on a card of its own (off by default: steps sit on the page, hairlines between). */
|
|
41
53
|
readonly cards?: boolean;
|
|
42
54
|
/**
|