@getorrery/cells 0.0.0-stage → 0.2.2

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.
@@ -0,0 +1,299 @@
1
+ /** List 1 · Content, Tier 2: what the host or an extension puts in a turn — port of `el/content.rs`. */
2
+ import { type Col, type Item, type Line, type Seg, type TRow } from "../cells";
3
+ import { type Block } from "./block";
4
+ /** A line given as runs: `[[text, class], …]`. */
5
+ export type Runs = [string, string][];
6
+ export declare function runs(r: Runs): Line;
7
+ /** One run of text in a style mode. */
8
+ export interface TextItem {
9
+ value: string;
10
+ /** `normal`, `dim`, `success`, `warning`, `error`, `accent`; `normal` when absent. */
11
+ style?: string;
12
+ }
13
+ /** Text nodes, in order. */
14
+ export interface TextView {
15
+ items: TextItem[];
16
+ caret?: boolean;
17
+ }
18
+ /** A text node: in mono, success/warning/error gain a `[word]` and accent turns bold. */
19
+ export declare function textLines(it: TextItem, w: number, m: boolean): Line[];
20
+ /** Text nodes, one after another. */
21
+ export declare function text(p: TextView, w: number, m: boolean): Item[];
22
+ /** Markdown, possibly still streaming. */
23
+ export interface MarkdownView {
24
+ source: string;
25
+ streaming?: boolean;
26
+ link?: number | null;
27
+ dim?: boolean;
28
+ }
29
+ /** Markdown as rows. */
30
+ export declare function markdown(p: MarkdownView, w: number, m: boolean): Item[];
31
+ /** A column. */
32
+ export interface Column {
33
+ label: string;
34
+ width: number;
35
+ align?: string | null;
36
+ priority?: number;
37
+ flex?: boolean;
38
+ trim_left?: boolean;
39
+ }
40
+ /** A cell: text, or `[text, class]`. */
41
+ export type CellV = string | [string, string];
42
+ /** A row. */
43
+ export interface RowV {
44
+ cells: CellV[];
45
+ disabled?: boolean;
46
+ }
47
+ /** A table node. */
48
+ export interface TableView {
49
+ columns: Column[];
50
+ rows?: RowV[];
51
+ sort?: [number, boolean] | null;
52
+ selected?: number | null;
53
+ column?: number | null;
54
+ /** `ready`, `loading`, `empty`, `error`; `ready` when absent. */
55
+ state?: string;
56
+ note?: string | null;
57
+ error?: string | null;
58
+ }
59
+ /** The table's columns and rows as the drawing primitive takes them. */
60
+ export declare function tableParts(p: TableView, m: boolean): [Col[], TRow[]];
61
+ /** A table: drops columns by priority; a spinner or a reason under it. */
62
+ export declare function table(p: TableView, w: number, m: boolean): Item[];
63
+ /** A tree node. */
64
+ export interface TreeNodeV {
65
+ label: string;
66
+ meta?: string | null;
67
+ dir?: boolean;
68
+ expanded?: boolean;
69
+ children?: TreeNodeV[];
70
+ /** `ready`, `loading`, `empty`, `error`; `ready` when absent. */
71
+ state?: string;
72
+ error?: string | null;
73
+ disabled?: boolean;
74
+ selected?: boolean;
75
+ }
76
+ /** A tree node's view. */
77
+ export interface TreeView {
78
+ nodes: TreeNodeV[];
79
+ }
80
+ /** A tree with `▸ ▾` and `│` guides. */
81
+ export declare function tree(p: TreeView, w: number, m: boolean): Item[];
82
+ /** A diff line. */
83
+ export interface DiffLineV {
84
+ n: string;
85
+ sign: string;
86
+ text: string;
87
+ }
88
+ /** A hunk. */
89
+ export interface HunkV {
90
+ header: string;
91
+ context?: string;
92
+ lines: DiffLineV[];
93
+ }
94
+ /** A file shown as a summary rather than lines. */
95
+ export interface DiffSummary {
96
+ path: string;
97
+ note: string;
98
+ }
99
+ /** A diff node. */
100
+ export interface DiffView {
101
+ path: string;
102
+ add?: number;
103
+ del?: number;
104
+ hunks?: HunkV[];
105
+ /** `ready`, `streaming`, `empty`, `summary`, `error`; `ready` when absent. */
106
+ state?: string;
107
+ selected?: number | null;
108
+ error?: string | null;
109
+ summaries?: DiffSummary[];
110
+ }
111
+ /** A class for a diff sign. */
112
+ export declare function signClass(s: string): string;
113
+ /** A diff line: number, sign, text on a tinted band; long lines wrap under a `↪` gutter. */
114
+ export declare function diffLine(n: string, s: string, text: string, w: number, nw: number): Line[];
115
+ /** A unified diff at every width. */
116
+ export declare function diff(p: DiffView, w: number, m: boolean): Item[];
117
+ /** A bar `w` wide: `━` in colour, `[####....]` in mono. */
118
+ export declare function bar(n: number, total: number, w: number, m: boolean, c: string): Line;
119
+ /** A progress node. */
120
+ export interface ProgressView {
121
+ label: string;
122
+ done?: number;
123
+ total?: number | null;
124
+ /** `running`, `paused`, `error`, `empty`; `running` when absent. */
125
+ state?: string;
126
+ note?: string | null;
127
+ error?: string | null;
128
+ }
129
+ /** Label, bar, `done/total`. */
130
+ export declare function progress(p: ProgressView, w: number, m: boolean): Item[];
131
+ /** A named output channel. */
132
+ export interface StreamView {
133
+ name: string;
134
+ /** `stdout` when absent. */
135
+ channel?: string;
136
+ /** `running`, `closed`, `error`, `detached`, `empty`; `running` when absent. */
137
+ state?: string;
138
+ status?: string;
139
+ lines?: string[];
140
+ note?: string | null;
141
+ selected?: boolean;
142
+ }
143
+ /** Header with state; the tail under a `│`. */
144
+ export declare function stream(p: StreamView, w: number, m: boolean): Item[];
145
+ /** A task item. */
146
+ export interface TaskItemV {
147
+ text: string;
148
+ /** `pending`, `active`, `done`, `failed`, `skipped`; `pending` when absent. */
149
+ state?: string;
150
+ note?: string | null;
151
+ }
152
+ /** A checklist. */
153
+ export interface TaskView {
154
+ items?: TaskItemV[];
155
+ selected?: number | null;
156
+ working?: string | null;
157
+ }
158
+ /** A task's mark. */
159
+ export declare function tick(state: string, m: boolean): Seg;
160
+ /** A task row: mark, text, note. */
161
+ export declare function taskRow(it: TaskItemV, w: number, m: boolean): Line;
162
+ /** `Tasks n/m` and the items, ticking in place. */
163
+ export declare function task(p: TaskView, w: number, m: boolean): Item[];
164
+ /** A choice. */
165
+ export interface ChoiceV {
166
+ label: string;
167
+ hint?: string | null;
168
+ }
169
+ /** How a question was answered, once it was. */
170
+ export interface Answered {
171
+ prompt: string;
172
+ answer: string;
173
+ note?: string | null;
174
+ }
175
+ /** A question. */
176
+ export interface QuestionView {
177
+ prompt: string;
178
+ choices?: ChoiceV[];
179
+ selected?: number;
180
+ countdown?: string | null;
181
+ error?: string | null;
182
+ answered?: Answered | null;
183
+ }
184
+ /** `? prompt`, numbered choices, the default named. */
185
+ export declare function question(p: QuestionView, w: number, m: boolean): Item[];
186
+ /** An option of a select or multi-select field. */
187
+ export interface Opt {
188
+ label: string;
189
+ on?: boolean;
190
+ }
191
+ /** A form field. */
192
+ export interface FieldV {
193
+ label: string;
194
+ /** `text`, `secret`, `select`, `multi`, `confirm`; `text` when absent. */
195
+ kind?: string;
196
+ value?: string;
197
+ options?: Opt[];
198
+ placeholder?: string;
199
+ short?: string | null;
200
+ error?: string | null;
201
+ }
202
+ /** A form. */
203
+ export interface FormView {
204
+ fields: FieldV[];
205
+ focused?: number | null;
206
+ /** `editing`, `saving`, `disabled`, `sequential`; `editing` when absent. */
207
+ state?: string;
208
+ /** `Save` when absent. */
209
+ submit?: string;
210
+ busy?: string | null;
211
+ reason?: string | null;
212
+ }
213
+ /** A secret, masked: a fixed run of dots and the last four. */
214
+ export declare function mask(v: string, dots: number): string;
215
+ /** Every field at once (a label column at ≥60 columns, stacked below), or one question per line in the sequential fallback. */
216
+ export declare function form(p: FormView, w: number, m: boolean): Item[];
217
+ /** {@link form} as lines; `submit` false leaves the submit row off. */
218
+ export declare function formLines(p: FormView, w: number, m: boolean, submit: boolean): Line[];
219
+ /** A titled group of calls. */
220
+ export interface StackView {
221
+ title: string;
222
+ count?: string | null;
223
+ blocks?: Block[];
224
+ }
225
+ /** A rule with the title, then the calls under it. */
226
+ export declare function stack(p: StackView, w: number, m: boolean): Item[];
227
+ /** A list item. */
228
+ export interface ListItemV {
229
+ label: string;
230
+ detail?: string;
231
+ disabled?: boolean;
232
+ }
233
+ /** A navigable list. */
234
+ export interface ListView {
235
+ items?: ListItemV[];
236
+ selected?: number;
237
+ /** `ready`, `loading`, `empty`, `error`, `disabled`; `ready` when absent. */
238
+ state?: string;
239
+ note?: string | null;
240
+ error?: string | null;
241
+ }
242
+ /** `❯` and a band on the cursor; disabled rows dim with their reason. */
243
+ export declare function list(p: ListView, w: number, m: boolean): Item[];
244
+ /** A button. */
245
+ export interface ButtonV {
246
+ label: string;
247
+ primary?: boolean;
248
+ busy?: string | null;
249
+ disabled?: boolean;
250
+ }
251
+ /** A row of buttons. */
252
+ export interface ButtonView {
253
+ buttons: ButtonV[];
254
+ focused?: number | null;
255
+ pressed?: number | null;
256
+ error?: string | null;
257
+ note?: string | null;
258
+ }
259
+ /** `[ Label ]`s; focus fills one with the accent. */
260
+ export declare function button(p: ButtonView, w: number, m: boolean): Item[];
261
+ /** An output line: text, or `[text, class]`. */
262
+ export type OutLine = string | [string, string];
263
+ /** A shell line. */
264
+ export interface CommandView {
265
+ cmd: string;
266
+ /** `running`, `ok`, `error`, `blocked`; `running` when absent. */
267
+ state?: string;
268
+ status?: string;
269
+ output?: OutLine[];
270
+ note?: string | null;
271
+ selected?: boolean;
272
+ }
273
+ /** `$ command`, the output tail, exit status and time. */
274
+ export declare function command(p: CommandView, w: number, m: boolean): Item[];
275
+ /** A titled group that opens and closes. */
276
+ export interface CollapsibleView {
277
+ title: string;
278
+ count?: string;
279
+ open?: boolean;
280
+ /** `ready`, `loading`, `empty`, `error`, `disabled`; `ready` when absent. */
281
+ state?: string;
282
+ body?: OutLine[];
283
+ note?: string | null;
284
+ selected?: boolean;
285
+ }
286
+ /** `▸ Title count`, one row closed. */
287
+ export declare function collapsible(p: CollapsibleView, w: number, m: boolean): Item[];
288
+ /** An extension's node, drawn by its fallback. */
289
+ export interface CustomView {
290
+ ns: string;
291
+ fallback?: Runs[];
292
+ props?: [string, string][];
293
+ /** `fallback`, `loading`, `error`, `disabled`; `fallback` when absent. */
294
+ state?: string;
295
+ note?: string | null;
296
+ keys?: string | null;
297
+ }
298
+ /** A dashed box titled with the namespace. */
299
+ export declare function custom(p: CustomView, w: number, m: boolean): Item[];
@@ -0,0 +1,99 @@
1
+ /**
2
+ * List 2 · Context, cost & model: the context meter, `/context`, `/cost`, the
3
+ * model picker, the compaction marker — port of `el/context.rs`.
4
+ */
5
+ import { type Item, type Line } from "../cells";
6
+ import { type FooterView } from "./chrome";
7
+ import type { CellV } from "./content";
8
+ /** Rust's `format!("{:.1}", x)`: exact decimal value, ties to even. */
9
+ export declare function fixed1(x: number): string;
10
+ /** A row over the footer: a warning, work in progress, or a failure. */
11
+ export interface Notice {
12
+ /** `warn`, `busy`, `error`. */
13
+ kind: string;
14
+ text: string;
15
+ }
16
+ /** Draw a notice row. */
17
+ export declare function noticeLines(n: Notice, w: number, m: boolean): Line[];
18
+ /** The footer's meter, and the notice above it near the limit. */
19
+ export interface CtxMeterView {
20
+ footer: FooterView;
21
+ notice?: Notice | null;
22
+ }
23
+ /** 10 cells in the footer; a notice row at 90%, compaction at 95%. */
24
+ export declare function ctxmeter(p: CtxMeterView, w: number, m: boolean): Item[];
25
+ /** A share of the context window. */
26
+ export interface Part {
27
+ label: string;
28
+ letter: string;
29
+ class: string;
30
+ /** Thousands of tokens. */
31
+ k: number;
32
+ }
33
+ /** `/context`. */
34
+ export interface ContextView {
35
+ title: string;
36
+ parts: Part[];
37
+ total: string;
38
+ /** The window, thousands of tokens; 200 when absent. */
39
+ limit_k?: number;
40
+ /** `ready`, `loading`, `error`; `ready` when absent. */
41
+ state?: string;
42
+ error?: string | null;
43
+ filled?: number | null;
44
+ }
45
+ /** A grid of 100 cells, coloured (or lettered) by share, and its legend. */
46
+ export declare function context(p: ContextView, w: number, m: boolean): Item[];
47
+ /** `/cost`. */
48
+ export interface CostView {
49
+ turns?: CellV[][];
50
+ models?: CellV[][];
51
+ session?: string;
52
+ total?: string;
53
+ selected?: number | null;
54
+ /** `ready`, `loading`, `empty`; `ready` when absent. */
55
+ state?: string;
56
+ warn?: string | null;
57
+ }
58
+ /** Per turn, per model, session total; unknown prices read `—`. */
59
+ export declare function cost(p: CostView, w: number, m: boolean): Item[];
60
+ /** A model. */
61
+ export interface ModelRow {
62
+ id: string;
63
+ caps?: string;
64
+ ctx?: string;
65
+ price?: string;
66
+ blocked?: string | null;
67
+ /** A dim word after it: `in use`, `not on the server yet`. */
68
+ note?: string | null;
69
+ }
70
+ /** A provider and its models. */
71
+ export interface ModelGroup {
72
+ provider: string;
73
+ status: string;
74
+ attention?: boolean;
75
+ models?: ModelRow[];
76
+ loading?: string | null;
77
+ }
78
+ /** `/model`. */
79
+ export interface ModelsView {
80
+ groups?: ModelGroup[];
81
+ selected?: number;
82
+ effort?: number | null;
83
+ error?: string | null;
84
+ }
85
+ /** Grouped by provider, capabilities as letters, an effort row under it. */
86
+ export declare function models(p: ModelsView, w: number, m: boolean): Item[];
87
+ /** Where history was summarized. */
88
+ export interface CompactView {
89
+ /** `done`, `running`, `failed`; `done` when absent. */
90
+ state?: string;
91
+ stats?: string;
92
+ busy?: string | null;
93
+ summary?: string;
94
+ open?: boolean;
95
+ selected?: boolean;
96
+ note?: string | null;
97
+ }
98
+ /** A full-width rule in the thread. */
99
+ export declare function compaction(p: CompactView, w: number, m: boolean): Item[];
@@ -0,0 +1,90 @@
1
+ /**
2
+ * `/extensions` (plan 39 T3.5, decision 0100 §1): one list of every
3
+ * extension, installed or not, its filters, its search and the required roles;
4
+ * the processes behind `p`; one row's details behind Enter — port of
5
+ * `el/extensions.rs`. The host formats every row (`orrery_registry::browse`);
6
+ * this draws them. The marks are glyphs (● ○ ↑) and every state is also in
7
+ * words, so mono reads the same. Read-only for now: no selection, no acts.
8
+ */
9
+ import { type Item } from "../cells";
10
+ /** One row of the list, as the host formats it (`orrery_registry::browse::Row`). The chat draws the same fields. */
11
+ export interface ExtRowV {
12
+ id: string;
13
+ /** The installed version, else the listed one. */
14
+ version?: string;
15
+ /** What it is, kebab-case: `tools`, `session-store`. */
16
+ kinds?: string[];
17
+ author?: string;
18
+ description?: string;
19
+ installed?: boolean;
20
+ /** Installed and not turned off; an installed row that is not is dimmed. */
21
+ loaded?: boolean;
22
+ /** Comes with Orrery: never offered an update here. */
23
+ builtin?: boolean;
24
+ /** The newer version the list has. */
25
+ update?: string | null;
26
+ /** `installed`, `available` or `update`: the ● ○ ↑ mark in words. */
27
+ mark?: string;
28
+ /** The line under the name. */
29
+ subtitle?: string;
30
+ keywords?: string[];
31
+ source?: string;
32
+ repository?: string;
33
+ /** It crashed or broke: the subtitle names `orrery ext show`. */
34
+ failed?: boolean;
35
+ }
36
+ export interface ProcRowV {
37
+ pid: string;
38
+ runtime: string;
39
+ mem: string;
40
+ cpu: string;
41
+ up: string;
42
+ hosts: string;
43
+ }
44
+ /** One row's details. A third item is the value's style class (`d` is dim). */
45
+ export interface DetailV {
46
+ title: string;
47
+ lines: [string, string, string?][];
48
+ failed?: boolean;
49
+ }
50
+ /** How the list was read: `age` is absent when there is no list. */
51
+ export interface ListV {
52
+ age?: string | null;
53
+ refreshing?: boolean;
54
+ offline?: boolean;
55
+ failed?: string | null;
56
+ }
57
+ export interface CountsV {
58
+ all?: number;
59
+ installed?: number;
60
+ updates?: number;
61
+ unloaded?: number;
62
+ }
63
+ /** The required roles (decision 0099 §2) and what fills each; null is missing. */
64
+ export interface RolesV {
65
+ "session-store"?: string | null;
66
+ provider?: string | null;
67
+ client?: string | null;
68
+ }
69
+ /** The overlay's props. `detail` set means the details view; otherwise `view` names the list or the processes. */
70
+ export interface ExtensionsView {
71
+ view?: string;
72
+ /** `all`, `installed` or `updates`. */
73
+ filter?: string;
74
+ /** The search, while `/` is on. */
75
+ query?: string | null;
76
+ rows?: ExtRowV[];
77
+ counts?: CountsV | null;
78
+ list?: ListV | null;
79
+ roles?: RolesV | null;
80
+ procs?: ProcRowV[];
81
+ totals?: string;
82
+ detail?: DetailV | null;
83
+ /** The row under the cursor (the client's). */
84
+ cursor?: number | null;
85
+ selected?: number | null;
86
+ /** The screen rows the client has for the overlay: past it the rows are windowed around the cursor, the head, totals and keys always drawn. */
87
+ height?: number | null;
88
+ }
89
+ /** Draw the overlay at `w` cells: the list, the processes, or one row's details. */
90
+ export declare function extensions(p: ExtensionsView, w: number, m: boolean): Item[];
@@ -0,0 +1,98 @@
1
+ /**
2
+ * List 2 · System feedback: toasts, the retry banner, the update notice, the
3
+ * git slot, the status line, the exit summary, notifications — port of
4
+ * `el/feedback.rs`.
5
+ */
6
+ import { type Item, type Line } from "../cells";
7
+ import { type FooterView } from "./chrome";
8
+ /** A toast. */
9
+ export interface Toast {
10
+ /** `success`, `info`, `warning`. */
11
+ kind: string;
12
+ text: string;
13
+ }
14
+ /** Toasts over the input (at most two). */
15
+ export interface ToastView {
16
+ toasts: Toast[];
17
+ }
18
+ /** One toast row, right-aligned. */
19
+ export declare function toastLine(x: Toast, w: number, m: boolean): Line;
20
+ /** Right-aligned on the row above the input; never focused. */
21
+ export declare function toast(p: ToastView, w: number, m: boolean): Item[];
22
+ /** A request backing off. */
23
+ export interface RetryView {
24
+ /** `waiting`, `retrying`, `gave-up`; `waiting` when absent. */
25
+ state?: string;
26
+ /** The mono word; `retry` when absent. */
27
+ word?: string;
28
+ text?: string;
29
+ countdown?: string;
30
+ /** How much of the wait is left, 0–10. */
31
+ left?: number;
32
+ }
33
+ /** One row and a draining bar above the input. */
34
+ export declare function retry(p: RetryView, w: number, m: boolean): Item[];
35
+ /** A newer runtime. */
36
+ export interface UpdateView {
37
+ /** `available`, `installing`, `done`, `failed`, `managed`; `available` when absent. */
38
+ state?: string;
39
+ latest: string;
40
+ current?: string;
41
+ progress?: number;
42
+ error?: string | null;
43
+ selected?: boolean;
44
+ }
45
+ /** One dim line under the banner at launch. */
46
+ export declare function update(p: UpdateView, w: number, m: boolean): Item[];
47
+ /** The workspace's git state. */
48
+ export interface GitView {
49
+ /** `ok`, `loading`, `none`, `error`, `detached`; `ok` when absent. */
50
+ state?: string;
51
+ branch?: string;
52
+ dirty?: number;
53
+ ahead?: number;
54
+ behind?: number;
55
+ error?: string | null;
56
+ }
57
+ /** The git slot's runs. */
58
+ export declare function gitLine(p: GitView, m: boolean): Line;
59
+ /** Branch, dirty count, ahead/behind, in plain marks. */
60
+ export declare function git(p: GitView, w: number, m: boolean): Item[];
61
+ /** A slot on the status line. */
62
+ export interface Slot {
63
+ /** `mode`, `git`, `ctx`, `cmd`, `model`. */
64
+ kind: string;
65
+ text?: string;
66
+ mono?: string | null;
67
+ label?: string;
68
+ /** `ok`, `loading`, `error`; `ok` when absent. */
69
+ state?: string;
70
+ }
71
+ /** `statusline = [...]` and what it draws. */
72
+ export interface StatusLineView {
73
+ config: string;
74
+ slots?: Slot[];
75
+ editing?: number | null;
76
+ footer?: FooterView | null;
77
+ }
78
+ /** The slots, left to right. */
79
+ export declare function statusline(p: StatusLineView, w: number, m: boolean): Item[];
80
+ /** Printed to the normal screen on the way out. */
81
+ export interface ExitView {
82
+ harness?: string | null;
83
+ /** `[label, value]` rows. */
84
+ rows?: [string, string][];
85
+ resume?: string | null;
86
+ error?: string | null;
87
+ }
88
+ /** Duration, cost, files changed, the exact resume command. */
89
+ export declare function exit(p: ExitView, w: number, m: boolean): Item[];
90
+ /** What the terminal is told when a turn ends or needs you. */
91
+ export interface NotifyView {
92
+ title: string;
93
+ body?: string;
94
+ focused?: boolean;
95
+ off?: boolean;
96
+ }
97
+ /** Title, bell, OS notification. */
98
+ export declare function notify(p: NotifyView, w: number, _m: boolean): Item[];
@@ -0,0 +1,18 @@
1
+ /** Helpers shared by the elements — `el/mod.rs`'s crate-private functions. */
2
+ import { type Item, type Line, type Seg } from "../cells";
3
+ /** Lines as an element's rows. */
4
+ export declare function out(lines: Line[]): Item[];
5
+ /** A selection flag that reads `true`, `1` or a string (serde `de_flag`). */
6
+ export declare function flag(v: unknown): boolean;
7
+ /** An overlay: a titled box, accent (heavy in mono), an optional label on the right of its top edge. */
8
+ export declare function ov(rows: Line[], w: number, m: boolean, title: string, right?: string | null): Line[];
9
+ /** `✗ text`, wrapped, in the error class. */
10
+ export declare function errLines(text: string, w: number, m: boolean): Line[];
11
+ /** `▲ text`, wrapped, in the attention class. */
12
+ export declare function warnLines(text: string, w: number, m: boolean, word: string): Line[];
13
+ /** `s` with the first match of `q` (case-insensitive) marked. */
14
+ export declare function hl(s: string, q: string, m: boolean): Line;
15
+ /** `❯ ` on the cursor's row, two spaces elsewhere. */
16
+ export declare function arrow(on: boolean): Seg;
17
+ /** A dock panel's head: a rule with the title and count, the key on the right. */
18
+ export declare function panelHead(w: number, title: string, count: Line, key: string | null, focused: boolean, m: boolean): Line;