@spences10/pi-tui-modal 0.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Scott Spence
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # @spences10/pi-tui-modal
2
+
3
+ Shared Pi TUI modal helpers for consistent picker and settings
4
+ overlays.
@@ -0,0 +1,49 @@
1
+ import { type ExtensionCommandContext } from '@mariozechner/pi-coding-agent';
2
+ import { type Component, type OverlayOptions, type SelectItem, type SelectListLayoutOptions, type SettingItem } from '@mariozechner/pi-tui';
3
+ type ModalColor = 'accent' | 'muted' | 'dim' | 'warning' | 'success';
4
+ type ModalTheme = {
5
+ fg(color: ModalColor, text: string): string;
6
+ bold(text: string): string;
7
+ };
8
+ export type ModalText = string | (() => string | string[]);
9
+ export type ModalMetadata = string | string[] | ((item: SettingItem | undefined) => string | string[] | undefined);
10
+ export interface ModalOptions {
11
+ title: string;
12
+ subtitle?: ModalText;
13
+ footer?: ModalText;
14
+ overlay_options?: OverlayOptions;
15
+ }
16
+ export interface ModalBody extends Component {
17
+ handleInput?(data: string): void;
18
+ }
19
+ export interface ModalControls<T> {
20
+ done: (result: T) => void;
21
+ }
22
+ export interface PickerModalOptions {
23
+ title: string;
24
+ subtitle?: ModalText;
25
+ footer?: ModalText;
26
+ overlay_options?: OverlayOptions;
27
+ items: SelectItem[];
28
+ initial_index?: number;
29
+ max_visible?: number;
30
+ empty_message?: string;
31
+ layout?: SelectListLayoutOptions;
32
+ }
33
+ export interface SettingsModalOptions {
34
+ title: string;
35
+ subtitle?: ModalText;
36
+ footer?: ModalText;
37
+ overlay_options?: OverlayOptions;
38
+ items: SettingItem[];
39
+ max_visible?: number;
40
+ enable_search?: boolean;
41
+ detail?: (item: SettingItem) => string | undefined;
42
+ metadata?: ModalMetadata;
43
+ on_change: (id: string, new_value: string) => boolean | void;
44
+ on_cancel?: () => void;
45
+ }
46
+ export declare function show_modal<T>(ctx: ExtensionCommandContext, options: ModalOptions, create_body: (controls: ModalControls<T>, theme: ModalTheme) => ModalBody): Promise<T>;
47
+ export declare function show_picker_modal(ctx: ExtensionCommandContext, options: PickerModalOptions): Promise<string | undefined>;
48
+ export declare function show_settings_modal(ctx: ExtensionCommandContext, options: SettingsModalOptions): Promise<void>;
49
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,323 @@
1
+ import { DynamicBorder, } from '@mariozechner/pi-coding-agent';
2
+ import { Box, Container, fuzzyFilter, getKeybindings, Input, SelectList, SettingsList, Text, truncateToWidth, visibleWidth, wrapTextWithAnsi, } from '@mariozechner/pi-tui';
3
+ const default_overlay_options = {
4
+ width: '80%',
5
+ minWidth: 60,
6
+ maxHeight: '80%',
7
+ };
8
+ function normalize_text(value) {
9
+ if (!value)
10
+ return [];
11
+ const resolved = typeof value === 'function' ? value() : value;
12
+ return Array.isArray(resolved) ? resolved : [resolved];
13
+ }
14
+ function normalize_metadata(value, item) {
15
+ if (!value)
16
+ return [];
17
+ const resolved = typeof value === 'function' ? value(item) : value;
18
+ if (!resolved)
19
+ return [];
20
+ return Array.isArray(resolved) ? resolved : [resolved];
21
+ }
22
+ function make_select_theme(theme) {
23
+ return {
24
+ selectedPrefix: (text) => theme.fg('accent', text),
25
+ selectedText: (text) => theme.fg('accent', text),
26
+ description: (text) => theme.fg('muted', text),
27
+ scrollInfo: (text) => theme.fg('dim', text),
28
+ noMatch: (text) => theme.fg('warning', text),
29
+ };
30
+ }
31
+ function value_color(value) {
32
+ const normalized = value.trim().toLowerCase();
33
+ if (normalized.startsWith('●') ||
34
+ normalized.startsWith('✓') ||
35
+ normalized.includes('enabled') ||
36
+ normalized.includes('selected') ||
37
+ normalized.includes('imported')) {
38
+ return 'success';
39
+ }
40
+ if (normalized.startsWith('↻') ||
41
+ normalized.includes('sync') ||
42
+ normalized.includes('queued')) {
43
+ return 'warning';
44
+ }
45
+ return 'dim';
46
+ }
47
+ function get_selected_setting(list) {
48
+ const internals = list;
49
+ const items = internals.searchEnabled
50
+ ? internals.filteredItems
51
+ : internals.items;
52
+ return items[internals.selectedIndex];
53
+ }
54
+ function make_settings_theme(theme) {
55
+ return {
56
+ cursor: theme.fg('accent', '›'),
57
+ label: (text, selected) => {
58
+ if (text.startsWith('──') && text.endsWith('──')) {
59
+ return theme.fg('dim', theme.bold(text));
60
+ }
61
+ return selected ? theme.fg('accent', text) : text;
62
+ },
63
+ value: (text, selected) => {
64
+ const rendered = theme.fg(value_color(text), text);
65
+ return selected
66
+ ? theme.bold(theme.fg('accent', rendered))
67
+ : rendered;
68
+ },
69
+ description: (text) => theme.fg('muted', text),
70
+ hint: (text) => theme.fg('dim', text),
71
+ };
72
+ }
73
+ class DetailedSettingsList {
74
+ items;
75
+ max_visible;
76
+ theme;
77
+ on_change;
78
+ on_cancel;
79
+ options;
80
+ filtered_items;
81
+ selected_index = 0;
82
+ search_input;
83
+ constructor(items, max_visible, theme, on_change, on_cancel, options) {
84
+ this.items = items;
85
+ this.max_visible = max_visible;
86
+ this.theme = theme;
87
+ this.on_change = on_change;
88
+ this.on_cancel = on_cancel;
89
+ this.options = options;
90
+ this.filtered_items = items;
91
+ if (options.enable_search)
92
+ this.search_input = new Input();
93
+ }
94
+ get_selected_item() {
95
+ return this.get_display_items()[this.selected_index];
96
+ }
97
+ render(width) {
98
+ const lines = [];
99
+ if (this.search_input) {
100
+ lines.push(...this.search_input.render(width));
101
+ lines.push('');
102
+ }
103
+ const display_items = this.get_display_items();
104
+ if (display_items.length === 0) {
105
+ lines.push(truncateToWidth(this.theme.hint(this.items.length === 0
106
+ ? ' No settings available'
107
+ : ' No matching settings'), width));
108
+ this.add_hint_line(lines, width);
109
+ return lines;
110
+ }
111
+ const start_index = Math.max(0, Math.min(this.selected_index - Math.floor(this.max_visible / 2), display_items.length - this.max_visible));
112
+ const end_index = Math.min(start_index + this.max_visible, display_items.length);
113
+ const max_label_width = Math.min(30, Math.max(...this.items.map((item) => visibleWidth(item.label))));
114
+ const max_value_width = Math.min(14, Math.max(...this.items.map((item) => visibleWidth(item.currentValue))));
115
+ for (let index = start_index; index < end_index; index++) {
116
+ const item = display_items[index];
117
+ if (!item)
118
+ continue;
119
+ lines.push(this.render_item(item, index === this.selected_index, width, max_label_width, max_value_width));
120
+ }
121
+ if (start_index > 0 || end_index < display_items.length) {
122
+ lines.push(this.theme.hint(truncateToWidth(` (${this.selected_index + 1}/${display_items.length})`, width - 2, '')));
123
+ }
124
+ const selected_item = this.get_selected_item();
125
+ if (selected_item?.description) {
126
+ lines.push('');
127
+ for (const line of wrapTextWithAnsi(selected_item.description, width - 4)) {
128
+ lines.push(this.theme.description(` ${line}`));
129
+ }
130
+ }
131
+ this.add_hint_line(lines, width);
132
+ return lines;
133
+ }
134
+ invalidate() {
135
+ // No cached rendering.
136
+ }
137
+ handleInput(data) {
138
+ const keybindings = getKeybindings();
139
+ const display_items = this.get_display_items();
140
+ if (keybindings.matches(data, 'tui.select.up')) {
141
+ if (display_items.length === 0)
142
+ return;
143
+ this.selected_index =
144
+ this.selected_index === 0
145
+ ? display_items.length - 1
146
+ : this.selected_index - 1;
147
+ }
148
+ else if (keybindings.matches(data, 'tui.select.down')) {
149
+ if (display_items.length === 0)
150
+ return;
151
+ this.selected_index =
152
+ this.selected_index === display_items.length - 1
153
+ ? 0
154
+ : this.selected_index + 1;
155
+ }
156
+ else if (keybindings.matches(data, 'tui.select.confirm') ||
157
+ data === ' ') {
158
+ this.activate_item();
159
+ }
160
+ else if (keybindings.matches(data, 'tui.select.cancel')) {
161
+ this.on_cancel();
162
+ }
163
+ else if (this.search_input) {
164
+ const sanitized = data.replace(/ /g, '');
165
+ if (!sanitized)
166
+ return;
167
+ this.search_input.handleInput(sanitized);
168
+ this.apply_filter(this.search_input.getValue());
169
+ }
170
+ }
171
+ get_display_items() {
172
+ return this.search_input ? this.filtered_items : this.items;
173
+ }
174
+ render_item(item, selected, width, max_label_width, max_value_width) {
175
+ const prefix = selected ? this.theme.cursor : ' ';
176
+ const label = truncateToWidth(item.label, max_label_width, '…');
177
+ const padded_label = label +
178
+ ' '.repeat(Math.max(0, max_label_width - visibleWidth(label)));
179
+ const value = truncateToWidth(item.currentValue, max_value_width, '');
180
+ const padded_value = value +
181
+ ' '.repeat(Math.max(0, max_value_width - visibleWidth(value)));
182
+ const detail = this.options.detail?.(item) ?? '';
183
+ const line = [
184
+ prefix,
185
+ this.theme.label(padded_label, selected),
186
+ ' ',
187
+ this.theme.value(padded_value, selected),
188
+ detail ? ` ${this.theme.description(detail)}` : '',
189
+ ].join('');
190
+ return truncateToWidth(line, width);
191
+ }
192
+ activate_item() {
193
+ const item = this.get_selected_item();
194
+ if (!item?.values || item.values.length === 0)
195
+ return;
196
+ const current_index = item.values.indexOf(item.currentValue);
197
+ const next_index = (current_index + 1) % item.values.length;
198
+ const new_value = item.values[next_index];
199
+ item.currentValue = new_value;
200
+ this.on_change(item.id, new_value);
201
+ }
202
+ apply_filter(query) {
203
+ this.filtered_items = fuzzyFilter(this.items, query, (item) => [
204
+ item.label,
205
+ item.currentValue,
206
+ item.description,
207
+ this.options.detail?.(item),
208
+ ]
209
+ .filter(Boolean)
210
+ .join(' '));
211
+ this.selected_index = 0;
212
+ }
213
+ add_hint_line(lines, width) {
214
+ lines.push('');
215
+ lines.push(truncateToWidth(this.theme.hint(this.search_input
216
+ ? ' Type to search · Enter/Space to change · Esc to cancel'
217
+ : ' Enter/Space to change · Esc to cancel'), width));
218
+ }
219
+ }
220
+ export async function show_modal(ctx, options, create_body) {
221
+ return await ctx.ui.custom((tui, theme, _kb, done) => {
222
+ const body = create_body({ done }, theme);
223
+ return {
224
+ render: (width) => {
225
+ const container = new Container();
226
+ const content = new Box(2, 1);
227
+ container.addChild(new DynamicBorder((text) => theme.fg('accent', text)));
228
+ content.addChild(new Text(theme.fg('accent', theme.bold(options.title)), 0, 0));
229
+ for (const line of normalize_text(options.subtitle)) {
230
+ content.addChild(new Text(theme.fg('muted', line), 0, 0));
231
+ }
232
+ content.addChild(body);
233
+ for (const line of normalize_text(options.footer)) {
234
+ content.addChild(new Text(theme.fg('dim', line), 0, 0));
235
+ }
236
+ container.addChild(content);
237
+ container.addChild(new DynamicBorder((text) => theme.fg('accent', text)));
238
+ return container.render(width);
239
+ },
240
+ invalidate: () => {
241
+ body.invalidate();
242
+ },
243
+ handleInput: (data) => {
244
+ body.handleInput?.(data);
245
+ tui.requestRender();
246
+ },
247
+ };
248
+ }, {
249
+ overlay: true,
250
+ overlayOptions: {
251
+ ...default_overlay_options,
252
+ ...options.overlay_options,
253
+ },
254
+ });
255
+ }
256
+ export async function show_picker_modal(ctx, options) {
257
+ if (options.items.length === 0) {
258
+ if (options.empty_message)
259
+ ctx.ui.notify(options.empty_message);
260
+ return undefined;
261
+ }
262
+ return await show_modal(ctx, {
263
+ title: options.title,
264
+ subtitle: options.subtitle,
265
+ footer: options.footer ?? '↑↓ navigate • enter select • esc cancel',
266
+ overlay_options: options.overlay_options,
267
+ }, ({ done }, theme) => {
268
+ const select_list = new SelectList(options.items, options.max_visible ?? Math.min(options.items.length, 12), make_select_theme(theme), options.layout);
269
+ if (options.initial_index !== undefined) {
270
+ select_list.setSelectedIndex(options.initial_index);
271
+ }
272
+ select_list.onSelect = (item) => done(item.value);
273
+ select_list.onCancel = () => done(undefined);
274
+ return select_list;
275
+ });
276
+ }
277
+ export async function show_settings_modal(ctx, options) {
278
+ await show_modal(ctx, {
279
+ title: options.title,
280
+ subtitle: options.subtitle,
281
+ footer: options.footer ??
282
+ 'search filters • enter toggles • esc close',
283
+ overlay_options: options.overlay_options,
284
+ }, ({ done }, theme) => {
285
+ const max_visible = options.max_visible ??
286
+ Math.min(Math.max(options.items.length + 4, 8), 16);
287
+ const settings_theme = make_settings_theme(theme);
288
+ const handle_change = (id, new_value) => {
289
+ if (options.on_change(id, new_value))
290
+ done();
291
+ };
292
+ const handle_cancel = () => {
293
+ options.on_cancel?.();
294
+ done();
295
+ };
296
+ const list = options.detail
297
+ ? new DetailedSettingsList(options.items, max_visible, settings_theme, handle_change, handle_cancel, {
298
+ enable_search: options.enable_search,
299
+ detail: options.detail,
300
+ })
301
+ : new SettingsList(options.items, max_visible, settings_theme, handle_change, handle_cancel, { enableSearch: options.enable_search });
302
+ return {
303
+ render: (width) => {
304
+ const lines = list.render(width);
305
+ const selected_item = list instanceof DetailedSettingsList
306
+ ? list.get_selected_item()
307
+ : get_selected_setting(list);
308
+ const metadata_lines = normalize_metadata(options.metadata, selected_item);
309
+ if (metadata_lines.length === 0)
310
+ return lines;
311
+ return [
312
+ ...lines,
313
+ '',
314
+ theme.fg('accent', theme.bold('Details')),
315
+ ...metadata_lines.map((line) => theme.fg('muted', line)),
316
+ ];
317
+ },
318
+ invalidate: () => list.invalidate(),
319
+ handleInput: (data) => list.handleInput(data),
320
+ };
321
+ });
322
+ }
323
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@spences10/pi-tui-modal",
3
+ "version": "0.0.2",
4
+ "description": "Shared Pi TUI modal helpers for picker and settings overlays",
5
+ "keywords": [
6
+ "modal",
7
+ "pi",
8
+ "picker",
9
+ "tui"
10
+ ],
11
+ "license": "MIT",
12
+ "author": "Scott Spence <me@scottspence.com>",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/spences10/my-pi.git",
16
+ "directory": "packages/pi-tui-modal"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "type": "module",
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "default": "./dist/index.js"
29
+ }
30
+ },
31
+ "dependencies": {
32
+ "@mariozechner/pi-coding-agent": "^0.70.6",
33
+ "@mariozechner/pi-tui": "^0.70.6"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^25.6.0",
37
+ "typescript": "^6.0.0",
38
+ "vitest": "^4.1.5"
39
+ },
40
+ "engines": {
41
+ "node": ">=22.0.0"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc -p tsconfig.build.json",
45
+ "check": "tsc --noEmit -p tsconfig.json"
46
+ }
47
+ }