@brainfile/cli 0.10.3 → 0.11.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/CHANGELOG.md +22 -0
- package/README.md +18 -2
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +1 -1
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/components/ManualBorder.d.ts +42 -0
- package/dist/tui/components/ManualBorder.d.ts.map +1 -0
- package/dist/tui/components/ManualBorder.js +56 -0
- package/dist/tui/components/ManualBorder.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +2 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/TaskCard.d.ts +7 -6
- package/dist/tui/components/TaskCard.d.ts.map +1 -1
- package/dist/tui/components/TaskCard.js +112 -69
- package/dist/tui/components/TaskCard.js.map +1 -1
- package/dist/tui/components/TaskCardMeasure.d.ts +45 -0
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -0
- package/dist/tui/components/TaskCardMeasure.js +118 -0
- package/dist/tui/components/TaskCardMeasure.js.map +1 -0
- package/dist/tui/components/TaskList.d.ts.map +1 -1
- package/dist/tui/components/TaskList.js +10 -17
- package/dist/tui/components/TaskList.js.map +1 -1
- package/dist/tui/components/index.d.ts +4 -0
- package/dist/tui/components/index.d.ts.map +1 -1
- package/dist/tui/components/index.js +9 -1
- package/dist/tui/components/index.js.map +1 -1
- package/dist/tui/types.d.ts +1 -1
- package/dist/tui/types.js +1 -1
- package/dist/tui/types.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.11.1] - 2025-11-27
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Status bar rendering** - Fixed character clipping in footer hints
|
|
14
|
+
|
|
15
|
+
## [0.11.0] - 2025-11-27
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- **TUI redesign** - Complete visual overhaul of the terminal interface
|
|
19
|
+
- Borderless task cards for cleaner, faster scanning
|
|
20
|
+
- Selection indicator (`▌`) matches column tabs for visual consistency
|
|
21
|
+
- Priority badge leads the title row for immediate visibility
|
|
22
|
+
- Compact `[X/Y]` subtask counts replace block progress bars
|
|
23
|
+
- Meta row shows progress, due date, and tags with `·` separators
|
|
24
|
+
- Task IDs right-aligned for consistent table-like appearance
|
|
25
|
+
- 3 lines per collapsed task (down from 7) - more tasks visible at once
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- **Layout stability** - Reserved space for status messages prevents layout shifts during updates
|
|
29
|
+
- **Row spacing** - Fixed inconsistent margins between task cards
|
|
30
|
+
- **Viewport calculations** - Fixed content width calculations for accurate scrolling
|
|
31
|
+
|
|
10
32
|
## [0.10.3] - 2025-11-27
|
|
11
33
|
|
|
12
34
|
### Fixed
|
package/README.md
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
**Task management for your terminal.** A full kanban board that lives in a markdown file.
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- Modern, borderless TUI optimized for information density
|
|
10
|
+
- Vim-style navigation with intuitive keybindings
|
|
10
11
|
- CLI commands for scripting and automation
|
|
11
|
-
- MCP server for AI assistant integration
|
|
12
|
+
- MCP server for AI assistant integration
|
|
12
13
|
|
|
13
14
|
## Installation
|
|
14
15
|
|
|
@@ -48,6 +49,21 @@ brainfile # Open with default brainfile.md
|
|
|
48
49
|
brainfile ./path/to/file.md # Open specific file
|
|
49
50
|
```
|
|
50
51
|
|
|
52
|
+
**Task Card Layout:**
|
|
53
|
+
```
|
|
54
|
+
▌ CRIT Implement user authentication flow
|
|
55
|
+
[1/5] · Nov 30 · #auth #security task-39
|
|
56
|
+
|
|
57
|
+
HIGH Dashboard performance optimization
|
|
58
|
+
[0/4] · Dec 4 · #performance #frontend task-40
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- `▌` indicator shows selected task
|
|
62
|
+
- Priority badge (CRIT/HIGH/MED/LOW) leads each row
|
|
63
|
+
- `[X/Y]` shows subtask progress
|
|
64
|
+
- Due dates with urgency coloring (red if overdue, yellow if soon)
|
|
65
|
+
- Tags and task ID complete the metadata row
|
|
66
|
+
|
|
51
67
|
**Panel Navigation:**
|
|
52
68
|
| Key | Action |
|
|
53
69
|
|-----|--------|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2DrD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2DrD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,qBAwSlD"}
|
package/dist/tui/BrainfileTUI.js
CHANGED
|
@@ -224,7 +224,7 @@ function BrainfileTUI({ filePath }) {
|
|
|
224
224
|
state.activePanel === 'archive' && (react_1.default.createElement(index_js_1.ArchivePanel, { archive: state.archive, selectedIndex: state.selectedArchiveIndex, viewportHeight: viewportHeight, termWidth: termWidth, expandedIds: state.expandedArchiveIds, mode: state.mode, columns: orderedColumns, restoreColumnIndex: state.archiveRestoreColumnIndex }))),
|
|
225
225
|
react_1.default.createElement(ink_1.Box, { paddingLeft: 1 },
|
|
226
226
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.border }, theme_js_1.BOX.horizontal.repeat(Math.max(1, termWidth - 2)))),
|
|
227
|
-
state.statusMessage && (react_1.default.createElement(index_js_1.StatusMessageDisplay, { message: state.statusMessage })),
|
|
227
|
+
react_1.default.createElement(ink_1.Box, { height: 1 }, state.statusMessage && (react_1.default.createElement(index_js_1.StatusMessageDisplay, { message: state.statusMessage }))),
|
|
228
228
|
react_1.default.createElement(index_js_1.StatusBar, { mode: state.mode, columnName: state.activePanel === 'tasks' ? (currentColumn?.title || '') : state.activePanel, taskIndex: state.activePanel === 'tasks' ? state.selectedTaskIndex + 1 : (state.activePanel === 'archive' ? state.selectedArchiveIndex + 1 : state.selectedRuleIndex + 1), taskCount: state.activePanel === 'tasks' ? currentTasks.length : (state.activePanel === 'archive' ? state.archive.length : (state.board.rules?.[state.activeRuleType]?.length || 0)), termWidth: termWidth, activePanel: state.activePanel })));
|
|
229
229
|
}
|
|
230
230
|
//# sourceMappingURL=BrainfileTUI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ManualBorder - Bordered container with exact dimension control
|
|
3
|
+
*
|
|
4
|
+
* Renders borders using box-drawing characters (╭╮╰╯│─) for complete
|
|
5
|
+
* control over dimensions. Unlike Ink's borderStyle, this guarantees
|
|
6
|
+
* exact line counts and prevents content overflow.
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
export interface ManualBorderProps {
|
|
10
|
+
/** Total width including borders */
|
|
11
|
+
width: number;
|
|
12
|
+
/** Border color */
|
|
13
|
+
borderColor?: string;
|
|
14
|
+
/** Whether to show separator line (for expanded cards) */
|
|
15
|
+
separatorAfterLine?: number;
|
|
16
|
+
/** Content rows to render inside the border */
|
|
17
|
+
children: React.ReactNode[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Renders a bordered container with manual box-drawing characters.
|
|
21
|
+
*
|
|
22
|
+
* Layout:
|
|
23
|
+
* ╭─────────────────────────╮ <- top border
|
|
24
|
+
* │ content line 1 │ <- content rows
|
|
25
|
+
* │ content line 2 │
|
|
26
|
+
* │─────────────────────────│ <- optional separator
|
|
27
|
+
* │ content line 3 │
|
|
28
|
+
* ╰─────────────────────────╯ <- bottom border
|
|
29
|
+
*/
|
|
30
|
+
export declare function ManualBorder({ width, borderColor, separatorAfterLine, children, }: ManualBorderProps): React.JSX.Element;
|
|
31
|
+
/**
|
|
32
|
+
* A single row inside a ManualBorder.
|
|
33
|
+
* Handles padding and ensures content fits within available width.
|
|
34
|
+
*/
|
|
35
|
+
export interface BorderRowProps {
|
|
36
|
+
/** Content to render */
|
|
37
|
+
children: React.ReactNode;
|
|
38
|
+
/** Horizontal padding (applied to both sides) */
|
|
39
|
+
paddingX?: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function BorderRow({ children, paddingX }: BorderRowProps): React.JSX.Element;
|
|
42
|
+
//# sourceMappingURL=ManualBorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualBorder.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ManualBorder.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAA4B,EAC5B,kBAAkB,EAClB,QAAQ,GACT,EAAE,iBAAiB,qBAqCnB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,EAAE,cAAc,qBAMnE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ManualBorder = ManualBorder;
|
|
7
|
+
exports.BorderRow = BorderRow;
|
|
8
|
+
/**
|
|
9
|
+
* ManualBorder - Bordered container with exact dimension control
|
|
10
|
+
*
|
|
11
|
+
* Renders borders using box-drawing characters (╭╮╰╯│─) for complete
|
|
12
|
+
* control over dimensions. Unlike Ink's borderStyle, this guarantees
|
|
13
|
+
* exact line counts and prevents content overflow.
|
|
14
|
+
*/
|
|
15
|
+
const react_1 = __importDefault(require("react"));
|
|
16
|
+
const ink_1 = require("ink");
|
|
17
|
+
const theme_js_1 = require("../theme.js");
|
|
18
|
+
/**
|
|
19
|
+
* Renders a bordered container with manual box-drawing characters.
|
|
20
|
+
*
|
|
21
|
+
* Layout:
|
|
22
|
+
* ╭─────────────────────────╮ <- top border
|
|
23
|
+
* │ content line 1 │ <- content rows
|
|
24
|
+
* │ content line 2 │
|
|
25
|
+
* │─────────────────────────│ <- optional separator
|
|
26
|
+
* │ content line 3 │
|
|
27
|
+
* ╰─────────────────────────╯ <- bottom border
|
|
28
|
+
*/
|
|
29
|
+
function ManualBorder({ width, borderColor = theme_js_1.PALETTE.border, separatorAfterLine, children, }) {
|
|
30
|
+
// Inner width is total width minus 2 border characters
|
|
31
|
+
const innerWidth = Math.max(width - 2, 1);
|
|
32
|
+
// Convert children to array for iteration
|
|
33
|
+
const rows = react_1.default.Children.toArray(children);
|
|
34
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
35
|
+
react_1.default.createElement(ink_1.Text, { color: borderColor },
|
|
36
|
+
'╭',
|
|
37
|
+
'─'.repeat(innerWidth),
|
|
38
|
+
'╮'),
|
|
39
|
+
rows.map((child, index) => (react_1.default.createElement(react_1.default.Fragment, { key: index },
|
|
40
|
+
react_1.default.createElement(ink_1.Box, null,
|
|
41
|
+
react_1.default.createElement(ink_1.Text, { color: borderColor }, '│'),
|
|
42
|
+
react_1.default.createElement(ink_1.Box, { width: innerWidth }, child),
|
|
43
|
+
react_1.default.createElement(ink_1.Text, { color: borderColor }, '│')),
|
|
44
|
+
separatorAfterLine === index && (react_1.default.createElement(ink_1.Text, { color: borderColor },
|
|
45
|
+
'├',
|
|
46
|
+
'─'.repeat(innerWidth),
|
|
47
|
+
'┤'))))),
|
|
48
|
+
react_1.default.createElement(ink_1.Text, { color: borderColor },
|
|
49
|
+
'╰',
|
|
50
|
+
'─'.repeat(innerWidth),
|
|
51
|
+
'╯')));
|
|
52
|
+
}
|
|
53
|
+
function BorderRow({ children, paddingX = 1 }) {
|
|
54
|
+
return (react_1.default.createElement(ink_1.Box, { paddingX: paddingX }, children));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ManualBorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualBorder.js","sourceRoot":"","sources":["../../../src/tui/components/ManualBorder.tsx"],"names":[],"mappings":";;;;;AAiCA,oCA0CC;AAaD,8BAMC;AA9FD;;;;;;GAMG;AACH,kDAA0B;AAC1B,6BAAgC;AAChC,0CAAsC;AAatC;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,GAAG,kBAAO,CAAC,MAAM,EAC5B,kBAAkB,EAClB,QAAQ,GACU;IAClB,uDAAuD;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,0CAA0C;IAC1C,MAAM,IAAI,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ;QAEzB,8BAAC,UAAI,IAAC,KAAK,EAAE,WAAW;YACrB,GAAG;YAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,GAAG,CAC5B;QAGN,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,8BAAC,eAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,KAAK;YACxB,8BAAC,SAAG;gBACF,8BAAC,UAAI,IAAC,KAAK,EAAE,WAAW,IAAG,GAAG,CAAQ;gBACtC,8BAAC,SAAG,IAAC,KAAK,EAAE,UAAU,IAAG,KAAK,CAAO;gBACrC,8BAAC,UAAI,IAAC,KAAK,EAAE,WAAW,IAAG,GAAG,CAAQ,CAClC;YAEL,kBAAkB,KAAK,KAAK,IAAI,CAC/B,8BAAC,UAAI,IAAC,KAAK,EAAE,WAAW;gBACrB,GAAG;gBAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,GAAG,CAC5B,CACR,CACc,CAClB,CAAC;QAGF,8BAAC,UAAI,IAAC,KAAK,EAAE,WAAW;YACrB,GAAG;YAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,GAAG,CAC5B,CACH,CACP,CAAC;AACJ,CAAC;AAaD,SAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAkB;IAClE,OAAO,CACL,8BAAC,SAAG,IAAC,QAAQ,EAAE,QAAQ,IACpB,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAiB,EAAE,WAAqB,EAAE,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAiB,EAAE,WAAqB,EAAE,EAAE,cAAc,qBA4DxI"}
|
|
@@ -16,9 +16,8 @@ function StatusBar({ mode, columnName, taskIndex, taskCount, termWidth, isWatchi
|
|
|
16
16
|
react_1.default.createElement(ink_1.Text, null, ' cancel'))) : (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
|
|
17
17
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "?"),
|
|
18
18
|
react_1.default.createElement(ink_1.Text, null, ' help '),
|
|
19
|
-
tabHint &&
|
|
20
|
-
|
|
21
|
-
react_1.default.createElement(ink_1.Text, null, tabHint))),
|
|
19
|
+
tabHint && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "TAB"),
|
|
20
|
+
tabHint && react_1.default.createElement(ink_1.Text, null, tabHint),
|
|
22
21
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "q"),
|
|
23
22
|
react_1.default.createElement(ink_1.Text, null, ' quit')));
|
|
24
23
|
// Middle section: column and position
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":";;;;;AAeA,
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":";;;;;AAeA,8BA4DC;AA3ED,kDAA0B;AAC1B,6BAAgC;AAChC,0CAA6C;AAa7C,SAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,WAAW,GAAG,OAAO,EAAkB;IACvI,oCAAoC;IACpC,MAAM,OAAO,GAAG,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnG,uDAAuD;IACvD,MAAM,YAAY,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACvC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;QAC5B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,UAAY;QACxC,8BAAC,UAAI,QAAE,SAAS,CAAQ,CACnB,CACR,CAAC,CAAC,CAAC,CACF,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;QAC5B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;QAC5C,8BAAC,UAAI,QAAE,SAAS,CAAQ;QACvB,OAAO,IAAI,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,UAAY;QACzD,OAAO,IAAI,8BAAC,UAAI,QAAE,OAAO,CAAQ;QAClC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;QAC5C,8BAAC,UAAI,QAAE,OAAO,CAAQ,CACjB,CACR,CAAC;IAEF,sCAAsC;IACtC,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpE,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,SAAS;QAE1C,8BAAC,SAAG,IAAC,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;YAEvD,YAAY;YAGb,8BAAC,SAAG,IAAC,QAAQ,EAAE,CAAC,GAAI;YAGnB,UAAU,CAAC,CAAC,CAAC,CACZ,8BAAC,UAAI;gBACH,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,IAAG,UAAU,CAAC,WAAW,EAAE,CAAQ;gBACpE,QAAQ,CAAC,CAAC,CAAC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,EAAE,IAAI,UAAE,IAAI,QAAQ,EAAE,CAAQ,CAAC,CAAC,CAAC,IAAI,CACvE,CACR,CAAC,CAAC,CAAC,IAAI;YAGR,8BAAC,SAAG,IAAC,QAAQ,EAAE,CAAC,GAAI;YAGnB,UAAU,CAAC,CAAC,CAAC,CACZ,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO;gBAC1B,8BAAC,UAAI,QAAE,gBAAK,CAAC,IAAI,CAAQ;gBACzB,8BAAC,UAAI,IAAC,QAAQ,UAAE,OAAO,CAAQ,CAC1B,CACR,CAAC,CAAC,CAAC,IAAI,CACJ;QAGN,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC;YACjB,8BAAC,UAAI,QAAE,GAAG,CAAQ,CACd,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TaskCard -
|
|
2
|
+
* TaskCard - Linear-style modern minimal (borderless)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
8
|
-
* 4.
|
|
4
|
+
* Design principles:
|
|
5
|
+
* 1. No borders - clean, fast scanning
|
|
6
|
+
* 2. Selected indicator ▌ matches column tabs
|
|
7
|
+
* 3. Priority badge leads the title row
|
|
8
|
+
* 4. Meta row indented to align with title
|
|
9
|
+
* 5. Consistent visual language (█░ progress, · separators)
|
|
9
10
|
*/
|
|
10
11
|
import React from 'react';
|
|
11
12
|
import type { Task } from '@brainfile/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AA2FD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,aAAa,qBAmH9E"}
|
|
@@ -5,24 +5,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TaskCard = TaskCard;
|
|
7
7
|
/**
|
|
8
|
-
* TaskCard -
|
|
8
|
+
* TaskCard - Linear-style modern minimal (borderless)
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* 1.
|
|
12
|
-
* 2.
|
|
13
|
-
* 3.
|
|
14
|
-
* 4.
|
|
10
|
+
* Design principles:
|
|
11
|
+
* 1. No borders - clean, fast scanning
|
|
12
|
+
* 2. Selected indicator ▌ matches column tabs
|
|
13
|
+
* 3. Priority badge leads the title row
|
|
14
|
+
* 4. Meta row indented to align with title
|
|
15
|
+
* 5. Consistent visual language (█░ progress, · separators)
|
|
15
16
|
*/
|
|
16
17
|
const react_1 = __importDefault(require("react"));
|
|
17
18
|
const ink_1 = require("ink");
|
|
18
19
|
const theme_js_1 = require("../theme.js");
|
|
19
20
|
const utils_js_1 = require("../utils.js");
|
|
20
|
-
|
|
21
|
+
const TaskCardMeasure_js_1 = require("./TaskCardMeasure.js");
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Sub-components
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/** Priority badge - compact colored label */
|
|
21
26
|
function PriorityBadge({ priority }) {
|
|
22
27
|
if (!priority)
|
|
23
28
|
return null;
|
|
24
29
|
const color = (0, utils_js_1.getPriorityColor)(priority);
|
|
25
|
-
// Use 3-char abbreviations for consistency: LOW, MED, HI, CRIT
|
|
26
30
|
const abbrev = {
|
|
27
31
|
low: 'LOW',
|
|
28
32
|
medium: 'MED',
|
|
@@ -32,86 +36,125 @@ function PriorityBadge({ priority }) {
|
|
|
32
36
|
const label = abbrev[priority.toLowerCase()] || priority.toUpperCase().slice(0, 4);
|
|
33
37
|
return (react_1.default.createElement(ink_1.Text, { color: "black", backgroundColor: color, bold: true }, ` ${label} `));
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
function
|
|
37
|
-
if (!tags || tags.length === 0)
|
|
38
|
-
return null;
|
|
39
|
-
const visibleTags = tags.slice(0, maxTags);
|
|
40
|
-
const remaining = tags.length - maxTags;
|
|
41
|
-
// Join tags with spaces for consistent rendering
|
|
42
|
-
let tagString = visibleTags.map(t => `#${t}`).join(' ');
|
|
43
|
-
if (remaining > 0) {
|
|
44
|
-
tagString += ` +${remaining}`;
|
|
45
|
-
}
|
|
46
|
-
// Truncate if maxWidth provided
|
|
47
|
-
if (maxWidth && tagString.length > maxWidth) {
|
|
48
|
-
tagString = tagString.slice(0, maxWidth - 1) + '…';
|
|
49
|
-
}
|
|
50
|
-
return (react_1.default.createElement(ink_1.Box, { marginLeft: 1 },
|
|
51
|
-
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, tagString)));
|
|
52
|
-
}
|
|
53
|
-
// Subtask progress indicator
|
|
54
|
-
function SubtaskProgress({ completed, total }) {
|
|
39
|
+
/** Compact bracketed progress count [X/Y] */
|
|
40
|
+
function SubtaskCount({ completed, total }) {
|
|
55
41
|
if (total === 0)
|
|
56
42
|
return null;
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
return (react_1.default.createElement(ink_1.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
43
|
+
const allDone = completed === total;
|
|
44
|
+
const color = allDone ? theme_js_1.PALETTE.success : theme_js_1.PALETTE.textSecondary;
|
|
45
|
+
return (react_1.default.createElement(ink_1.Text, { color: color },
|
|
46
|
+
"[",
|
|
47
|
+
completed,
|
|
48
|
+
"/",
|
|
49
|
+
total,
|
|
50
|
+
"]"));
|
|
64
51
|
}
|
|
65
|
-
|
|
66
|
-
function
|
|
52
|
+
/** Due date with urgency coloring */
|
|
53
|
+
function DueDate({ dueDate }) {
|
|
67
54
|
if (!dueDate)
|
|
68
55
|
return null;
|
|
69
56
|
const due = new Date(dueDate);
|
|
70
57
|
const now = new Date();
|
|
71
58
|
const diffDays = Math.ceil((due.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
72
|
-
// Determine color based on urgency
|
|
73
59
|
const getColor = () => {
|
|
74
60
|
if (diffDays < 0)
|
|
75
|
-
return theme_js_1.PALETTE.error;
|
|
61
|
+
return theme_js_1.PALETTE.error;
|
|
76
62
|
if (diffDays <= 2)
|
|
77
|
-
return theme_js_1.PALETTE.warning;
|
|
63
|
+
return theme_js_1.PALETTE.warning;
|
|
78
64
|
return theme_js_1.PALETTE.textSecondary;
|
|
79
65
|
};
|
|
80
|
-
// Format as short date
|
|
81
66
|
const formatted = due.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
67
|
+
const icon = diffDays < 0 ? ` ${theme_js_1.ICONS.warning}` : '';
|
|
82
68
|
return (react_1.default.createElement(ink_1.Text, { color: getColor() },
|
|
83
|
-
|
|
84
|
-
|
|
69
|
+
formatted,
|
|
70
|
+
icon));
|
|
71
|
+
}
|
|
72
|
+
/** Tags display - compact inline */
|
|
73
|
+
function Tags({ tags, maxTags = 2 }) {
|
|
74
|
+
if (!tags || tags.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
const visible = tags.slice(0, maxTags);
|
|
77
|
+
const remaining = tags.length - maxTags;
|
|
78
|
+
return (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
|
|
79
|
+
visible.map((t, i) => (react_1.default.createElement(ink_1.Text, { key: t },
|
|
80
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
|
|
81
|
+
"#",
|
|
82
|
+
t),
|
|
83
|
+
i < visible.length - 1 && ' '))),
|
|
84
|
+
remaining > 0 && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
|
|
85
|
+
" +",
|
|
86
|
+
remaining)));
|
|
87
|
+
}
|
|
88
|
+
/** Separator dot */
|
|
89
|
+
function Sep() {
|
|
90
|
+
return react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, " \u00B7 ");
|
|
85
91
|
}
|
|
92
|
+
// ============================================================================
|
|
93
|
+
// Main TaskCard Component
|
|
94
|
+
// ============================================================================
|
|
86
95
|
function TaskCard({ task, isSelected, isExpanded, width }) {
|
|
87
96
|
const subtasks = task.subtasks || [];
|
|
88
97
|
const completedSubtasks = subtasks.filter(s => s.completed).length;
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
98
|
+
// Indicator width: " ▌ " = 4 chars for selected, " " = 4 chars for not
|
|
99
|
+
const indicatorWidth = 4;
|
|
100
|
+
const contentWidth = width - indicatorWidth - 2; // -2 for right padding
|
|
101
|
+
// Build meta segments for row 2
|
|
102
|
+
// Order: progress → date → tags (fixed-width first for table-like alignment)
|
|
103
|
+
const metaSegments = [];
|
|
104
|
+
if (subtasks.length > 0) {
|
|
105
|
+
metaSegments.push(react_1.default.createElement(SubtaskCount, { key: "progress", completed: completedSubtasks, total: subtasks.length }));
|
|
106
|
+
}
|
|
107
|
+
if (task.dueDate) {
|
|
108
|
+
metaSegments.push(react_1.default.createElement(DueDate, { key: "due", dueDate: task.dueDate }));
|
|
109
|
+
}
|
|
110
|
+
if (task.tags && task.tags.length > 0) {
|
|
111
|
+
metaSegments.push(react_1.default.createElement(Tags, { key: "tags", tags: task.tags, maxTags: 3 }));
|
|
112
|
+
}
|
|
113
|
+
// Join meta segments with separators
|
|
114
|
+
const metaContent = [];
|
|
115
|
+
metaSegments.forEach((seg, i) => {
|
|
116
|
+
if (i > 0)
|
|
117
|
+
metaContent.push(react_1.default.createElement(Sep, { key: `sep-${i}` }));
|
|
118
|
+
metaContent.push(seg);
|
|
119
|
+
});
|
|
120
|
+
// Calculate title width (account for priority badge if present)
|
|
121
|
+
const priorityWidth = task.priority ? 7 : 0; // " HIGH " = 6 + 1 space
|
|
122
|
+
const titleWidth = contentWidth - priorityWidth;
|
|
123
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", width: width },
|
|
124
|
+
react_1.default.createElement(ink_1.Box, null,
|
|
125
|
+
react_1.default.createElement(ink_1.Text, { color: isSelected ? theme_js_1.PALETTE.accent : theme_js_1.PALETTE.textDim }, isSelected ? ' ▌ ' : ' '),
|
|
126
|
+
task.priority && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
127
|
+
react_1.default.createElement(PriorityBadge, { priority: task.priority }),
|
|
128
|
+
react_1.default.createElement(ink_1.Text, null, " "))),
|
|
129
|
+
react_1.default.createElement(ink_1.Text, { color: isSelected ? theme_js_1.PALETTE.text : theme_js_1.PALETTE.textSecondary, bold: isSelected }, (0, utils_js_1.truncate)(task.title, titleWidth))),
|
|
130
|
+
react_1.default.createElement(ink_1.Box, { width: width },
|
|
131
|
+
react_1.default.createElement(ink_1.Text, null, ' '),
|
|
132
|
+
metaContent.length > 0 ? (react_1.default.createElement(ink_1.Box, null, metaContent)) : null,
|
|
133
|
+
react_1.default.createElement(ink_1.Spacer, null),
|
|
134
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, task.id)),
|
|
135
|
+
isExpanded && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: 1, marginLeft: 4 },
|
|
136
|
+
task.description && (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
137
|
+
(0, TaskCardMeasure_js_1.wrapText)(task.description, contentWidth - 4).slice(0, 3).map((line, i) => (react_1.default.createElement(ink_1.Text, { key: i, color: theme_js_1.PALETTE.textSecondary }, (0, utils_js_1.truncate)(line, contentWidth - 4)))),
|
|
138
|
+
(0, TaskCardMeasure_js_1.wrapText)(task.description, contentWidth - 4).length > 3 && (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "\u2026")))),
|
|
139
|
+
subtasks.length > 0 && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: task.description ? 1 : 0 },
|
|
140
|
+
subtasks.slice(0, 5).map((st, i) => (react_1.default.createElement(ink_1.Text, { key: i, color: st.completed ? theme_js_1.PALETTE.success : theme_js_1.PALETTE.textSecondary },
|
|
141
|
+
st.completed ? theme_js_1.ICONS.success : '○',
|
|
110
142
|
" ",
|
|
111
|
-
(0, utils_js_1.truncate)(st.title, contentWidth -
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
143
|
+
(0, utils_js_1.truncate)(st.title, contentWidth - 6)))),
|
|
144
|
+
subtasks.length > 5 && (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
|
|
145
|
+
" +",
|
|
146
|
+
subtasks.length - 5,
|
|
147
|
+
" more")))),
|
|
148
|
+
task.relatedFiles && task.relatedFiles.length > 0 && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: 1 },
|
|
149
|
+
task.relatedFiles.slice(0, 3).map((file, i) => {
|
|
150
|
+
const fileName = file.split('/').pop() || file;
|
|
151
|
+
return (react_1.default.createElement(ink_1.Text, { key: i },
|
|
152
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "\u2192 "),
|
|
153
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accentAlt }, (0, utils_js_1.truncate)(fileName, contentWidth - 6))));
|
|
154
|
+
}),
|
|
155
|
+
task.relatedFiles.length > 3 && (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
|
|
156
|
+
" +",
|
|
157
|
+
task.relatedFiles.length - 3,
|
|
158
|
+
" more"))))))));
|
|
116
159
|
}
|
|
117
160
|
//# sourceMappingURL=TaskCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskCardMeasure - Single source of truth for TaskCard height calculations
|
|
3
|
+
*
|
|
4
|
+
* This module provides deterministic height calculation for TaskCards.
|
|
5
|
+
* Used by both TaskCard (rendering) and TaskList (viewport scrolling).
|
|
6
|
+
*/
|
|
7
|
+
import type { Task } from '@brainfile/core';
|
|
8
|
+
export interface TaskCardDimensions {
|
|
9
|
+
collapsed: number;
|
|
10
|
+
expanded: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wrap text to a maximum width, returning an array of lines.
|
|
14
|
+
* Each line is guaranteed to fit within maxWidth characters.
|
|
15
|
+
*/
|
|
16
|
+
export declare function wrapText(text: string, maxWidth: number): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Safe truncation that always returns a non-empty string.
|
|
19
|
+
* Ink requires non-empty strings to avoid rendering errors.
|
|
20
|
+
*/
|
|
21
|
+
export declare function safeTruncate(text: string | undefined, maxWidth: number): string;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate exact height dimensions for a TaskCard.
|
|
24
|
+
*
|
|
25
|
+
* Linear-style borderless design:
|
|
26
|
+
*
|
|
27
|
+
* COLLAPSED (always 3 lines):
|
|
28
|
+
* - Row 1: indicator + priority + title = 1
|
|
29
|
+
* - Row 2: indented meta + ID = 1
|
|
30
|
+
* - Margin between cards (handled by TaskList) = 1
|
|
31
|
+
*
|
|
32
|
+
* EXPANDED (variable):
|
|
33
|
+
* - Base collapsed: 3
|
|
34
|
+
* - marginTop before expanded content: 1
|
|
35
|
+
* - Description: min(lines, 3) + overflow(1) (if present)
|
|
36
|
+
* - Subtasks: marginTop(conditional) + min(count, 5) + overflow(1) (if present)
|
|
37
|
+
* - Related files: marginTop(1) + min(count, 3) + overflow(1) (if present)
|
|
38
|
+
*/
|
|
39
|
+
export declare function measureTaskCard(task: Task, contentWidth: number): TaskCardDimensions;
|
|
40
|
+
/**
|
|
41
|
+
* Get the height for a task card based on expanded state.
|
|
42
|
+
* Convenience wrapper for TaskList viewport calculations.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getTaskCardHeight(task: Task, isExpanded: boolean, contentWidth: number): number;
|
|
45
|
+
//# sourceMappingURL=TaskCardMeasure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCardMeasure.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAwCpF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAG/F"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapText = wrapText;
|
|
4
|
+
exports.safeTruncate = safeTruncate;
|
|
5
|
+
exports.measureTaskCard = measureTaskCard;
|
|
6
|
+
exports.getTaskCardHeight = getTaskCardHeight;
|
|
7
|
+
/**
|
|
8
|
+
* Wrap text to a maximum width, returning an array of lines.
|
|
9
|
+
* Each line is guaranteed to fit within maxWidth characters.
|
|
10
|
+
*/
|
|
11
|
+
function wrapText(text, maxWidth) {
|
|
12
|
+
if (!text || maxWidth <= 0)
|
|
13
|
+
return [];
|
|
14
|
+
const words = text.split(/\s+/);
|
|
15
|
+
const lines = [];
|
|
16
|
+
let currentLine = '';
|
|
17
|
+
for (const word of words) {
|
|
18
|
+
if (word.length > maxWidth) {
|
|
19
|
+
// Word is longer than line - split it
|
|
20
|
+
if (currentLine) {
|
|
21
|
+
lines.push(currentLine);
|
|
22
|
+
currentLine = '';
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < word.length; i += maxWidth) {
|
|
25
|
+
lines.push(word.slice(i, i + maxWidth));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (currentLine.length + 1 + word.length <= maxWidth) {
|
|
29
|
+
// Word fits on current line
|
|
30
|
+
currentLine = currentLine ? `${currentLine} ${word}` : word;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// Start new line
|
|
34
|
+
if (currentLine)
|
|
35
|
+
lines.push(currentLine);
|
|
36
|
+
currentLine = word;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (currentLine)
|
|
40
|
+
lines.push(currentLine);
|
|
41
|
+
return lines.length > 0 ? lines : [''];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Safe truncation that always returns a non-empty string.
|
|
45
|
+
* Ink requires non-empty strings to avoid rendering errors.
|
|
46
|
+
*/
|
|
47
|
+
function safeTruncate(text, maxWidth) {
|
|
48
|
+
if (!text)
|
|
49
|
+
return ' ';
|
|
50
|
+
if (maxWidth <= 0)
|
|
51
|
+
return ' ';
|
|
52
|
+
if (maxWidth <= 3)
|
|
53
|
+
return text.slice(0, maxWidth);
|
|
54
|
+
if (text.length <= maxWidth)
|
|
55
|
+
return text;
|
|
56
|
+
return text.slice(0, maxWidth - 1) + '…';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Calculate exact height dimensions for a TaskCard.
|
|
60
|
+
*
|
|
61
|
+
* Linear-style borderless design:
|
|
62
|
+
*
|
|
63
|
+
* COLLAPSED (always 3 lines):
|
|
64
|
+
* - Row 1: indicator + priority + title = 1
|
|
65
|
+
* - Row 2: indented meta + ID = 1
|
|
66
|
+
* - Margin between cards (handled by TaskList) = 1
|
|
67
|
+
*
|
|
68
|
+
* EXPANDED (variable):
|
|
69
|
+
* - Base collapsed: 3
|
|
70
|
+
* - marginTop before expanded content: 1
|
|
71
|
+
* - Description: min(lines, 3) + overflow(1) (if present)
|
|
72
|
+
* - Subtasks: marginTop(conditional) + min(count, 5) + overflow(1) (if present)
|
|
73
|
+
* - Related files: marginTop(1) + min(count, 3) + overflow(1) (if present)
|
|
74
|
+
*/
|
|
75
|
+
function measureTaskCard(task, contentWidth) {
|
|
76
|
+
// Collapsed is ALWAYS 3 lines (2 content + 1 margin)
|
|
77
|
+
const collapsed = 3;
|
|
78
|
+
// Expanded builds on top of collapsed base
|
|
79
|
+
let expanded = 3;
|
|
80
|
+
// marginTop before expanded content
|
|
81
|
+
expanded += 1;
|
|
82
|
+
// Description section (if present)
|
|
83
|
+
if (task.description) {
|
|
84
|
+
const descLines = wrapText(task.description, contentWidth - 4);
|
|
85
|
+
expanded += Math.min(descLines.length, 3);
|
|
86
|
+
if (descLines.length > 3) {
|
|
87
|
+
expanded += 1; // "…" overflow indicator
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Subtasks section (if present)
|
|
91
|
+
if (task.subtasks && task.subtasks.length > 0) {
|
|
92
|
+
if (task.description) {
|
|
93
|
+
expanded += 1; // marginTop={1} only if description present
|
|
94
|
+
}
|
|
95
|
+
expanded += Math.min(task.subtasks.length, 5);
|
|
96
|
+
if (task.subtasks.length > 5) {
|
|
97
|
+
expanded += 1; // "+N more" line
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Related files section (if present)
|
|
101
|
+
if (task.relatedFiles && task.relatedFiles.length > 0) {
|
|
102
|
+
expanded += 1; // marginTop={1}
|
|
103
|
+
expanded += Math.min(task.relatedFiles.length, 3);
|
|
104
|
+
if (task.relatedFiles.length > 3) {
|
|
105
|
+
expanded += 1; // "+N more" line
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { collapsed, expanded };
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the height for a task card based on expanded state.
|
|
112
|
+
* Convenience wrapper for TaskList viewport calculations.
|
|
113
|
+
*/
|
|
114
|
+
function getTaskCardHeight(task, isExpanded, contentWidth) {
|
|
115
|
+
const dims = measureTaskCard(task, contentWidth);
|
|
116
|
+
return isExpanded ? dims.expanded : dims.collapsed;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=TaskCardMeasure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCardMeasure.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":";;AAiBA,4BA6BC;AAMD,oCAMC;AAmBD,0CAwCC;AAMD,8CAGC;AAjHD;;;GAGG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,QAAgB;IACrD,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC3B,sCAAsC;YACtC,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxB,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5D,4BAA4B;YAC5B,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,IAAI,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAwB,EAAE,QAAgB;IACrE,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACtB,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,eAAe,CAAC,IAAU,EAAE,YAAoB;IAC9D,qDAAqD;IACrD,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,2CAA2C;IAC3C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,oCAAoC;IACpC,QAAQ,IAAI,CAAC,CAAC;IAEd,mCAAmC;IACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QAC/D,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,yBAAyB;QAC1C,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,QAAQ,IAAI,CAAC,CAAC,CAAC,4CAA4C;QAC7D,CAAC;QACD,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,QAAQ,IAAI,CAAC,CAAC,CAAC,iBAAiB;QAClC,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,QAAQ,IAAI,CAAC,CAAC,CAAC,iBAAiB;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAU,EAAE,UAAmB,EAAE,YAAoB;IACrF,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,aAAa,qBAuFvG"}
|
|
@@ -8,19 +8,10 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const ink_1 = require("ink");
|
|
9
9
|
const theme_js_1 = require("../theme.js");
|
|
10
10
|
const TaskCard_js_1 = require("./TaskCard.js");
|
|
11
|
+
const TaskCardMeasure_js_1 = require("./TaskCardMeasure.js");
|
|
11
12
|
function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth }) {
|
|
12
13
|
const cardWidth = termWidth - 4;
|
|
13
|
-
//
|
|
14
|
-
const getTaskHeight = (task, isExpanded) => {
|
|
15
|
-
// Base: top border(1) + title(1) + metadata(1) + bottom border(1) + margin(1) = 5
|
|
16
|
-
if (!isExpanded)
|
|
17
|
-
return 5;
|
|
18
|
-
const subtaskCount = task.subtasks?.length || 0;
|
|
19
|
-
const hasDescription = task.description;
|
|
20
|
-
const hasFiles = task.relatedFiles?.length;
|
|
21
|
-
// expandedLines: separator(1) + description(2 if present) + subtasks + files(2 if present)
|
|
22
|
-
return 5 + 1 + (hasDescription ? 2 : 0) + subtaskCount + (hasFiles ? 2 : 0);
|
|
23
|
-
};
|
|
14
|
+
const contentWidth = cardWidth - 6; // indicator (4) + right padding (2) = 6
|
|
24
15
|
// Calculate scroll offset - ensure selected task is visible
|
|
25
16
|
// Start from selected task and work backwards to find scroll position
|
|
26
17
|
let scrollOffset = 0;
|
|
@@ -28,11 +19,13 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
28
19
|
for (let i = 0; i < selectedIndex; i++) {
|
|
29
20
|
const task = tasks[i];
|
|
30
21
|
const isExpanded = expandedIds.has(task.id);
|
|
31
|
-
heightBeforeSelected +=
|
|
22
|
+
heightBeforeSelected += (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth);
|
|
32
23
|
}
|
|
33
24
|
// If selected task would be off screen, adjust scroll
|
|
34
25
|
const selectedTask = tasks[selectedIndex];
|
|
35
|
-
const selectedHeight = selectedTask
|
|
26
|
+
const selectedHeight = selectedTask
|
|
27
|
+
? (0, TaskCardMeasure_js_1.getTaskCardHeight)(selectedTask, expandedIds.has(selectedTask.id), contentWidth)
|
|
28
|
+
: 5;
|
|
36
29
|
if (heightBeforeSelected + selectedHeight > viewportHeight) {
|
|
37
30
|
// Need to scroll - start from selected task
|
|
38
31
|
scrollOffset = selectedIndex;
|
|
@@ -48,7 +41,7 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
48
41
|
const task = tasks[i];
|
|
49
42
|
const isSelected = i === selectedIndex;
|
|
50
43
|
const isExpanded = expandedIds.has(task.id);
|
|
51
|
-
const taskLines =
|
|
44
|
+
const taskLines = (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth);
|
|
52
45
|
// Always include the selected task, even if it's tall
|
|
53
46
|
if (isSelected) {
|
|
54
47
|
visibleItems.push({ task, isSelected, isExpanded });
|
|
@@ -74,8 +67,8 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
74
67
|
react_1.default.createElement(ink_1.Text, null, ' '))))));
|
|
75
68
|
}
|
|
76
69
|
return (react_1.default.createElement(ink_1.Box, { flexGrow: 1, flexDirection: "column", paddingLeft: 1 },
|
|
77
|
-
visibleItems.map(({ task, isSelected, isExpanded }) => (react_1.default.createElement(
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
visibleItems.map(({ task, isSelected, isExpanded }, index) => (react_1.default.createElement(ink_1.Box, { key: task.id, marginTop: index > 0 ? 1 : 0 },
|
|
71
|
+
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: task, isSelected: isSelected, isExpanded: isExpanded, width: cardWidth })))),
|
|
72
|
+
emptyLines > 0 && react_1.default.createElement(ink_1.Box, { height: emptyLines })));
|
|
80
73
|
}
|
|
81
74
|
//# sourceMappingURL=TaskList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,4 +22,8 @@ export { RulesPanel } from './RulesPanel.js';
|
|
|
22
22
|
export type { RulesPanelProps } from './RulesPanel.js';
|
|
23
23
|
export { ArchivePanel } from './ArchivePanel.js';
|
|
24
24
|
export type { ArchivePanelProps } from './ArchivePanel.js';
|
|
25
|
+
export { ManualBorder, BorderRow } from './ManualBorder.js';
|
|
26
|
+
export type { ManualBorderProps, BorderRowProps } from './ManualBorder.js';
|
|
27
|
+
export { measureTaskCard, getTaskCardHeight, wrapText, safeTruncate } from './TaskCardMeasure.js';
|
|
28
|
+
export type { TaskCardDimensions } from './TaskCardMeasure.js';
|
|
25
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClG,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ArchivePanel = exports.RulesPanel = exports.MainPanelTabs = exports.NewTaskOverlay = exports.SubtaskOverlay = exports.DeleteConfirmOverlay = exports.MoveOverlay = exports.StatusMessageDisplay = exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = void 0;
|
|
3
|
+
exports.safeTruncate = exports.wrapText = exports.getTaskCardHeight = exports.measureTaskCard = exports.BorderRow = exports.ManualBorder = exports.ArchivePanel = exports.RulesPanel = exports.MainPanelTabs = exports.NewTaskOverlay = exports.SubtaskOverlay = exports.DeleteConfirmOverlay = exports.MoveOverlay = exports.StatusMessageDisplay = exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = void 0;
|
|
4
4
|
var Header_js_1 = require("./Header.js");
|
|
5
5
|
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_js_1.Header; } });
|
|
6
6
|
var ProgressBar_js_1 = require("./ProgressBar.js");
|
|
@@ -29,4 +29,12 @@ var RulesPanel_js_1 = require("./RulesPanel.js");
|
|
|
29
29
|
Object.defineProperty(exports, "RulesPanel", { enumerable: true, get: function () { return RulesPanel_js_1.RulesPanel; } });
|
|
30
30
|
var ArchivePanel_js_1 = require("./ArchivePanel.js");
|
|
31
31
|
Object.defineProperty(exports, "ArchivePanel", { enumerable: true, get: function () { return ArchivePanel_js_1.ArchivePanel; } });
|
|
32
|
+
var ManualBorder_js_1 = require("./ManualBorder.js");
|
|
33
|
+
Object.defineProperty(exports, "ManualBorder", { enumerable: true, get: function () { return ManualBorder_js_1.ManualBorder; } });
|
|
34
|
+
Object.defineProperty(exports, "BorderRow", { enumerable: true, get: function () { return ManualBorder_js_1.BorderRow; } });
|
|
35
|
+
var TaskCardMeasure_js_1 = require("./TaskCardMeasure.js");
|
|
36
|
+
Object.defineProperty(exports, "measureTaskCard", { enumerable: true, get: function () { return TaskCardMeasure_js_1.measureTaskCard; } });
|
|
37
|
+
Object.defineProperty(exports, "getTaskCardHeight", { enumerable: true, get: function () { return TaskCardMeasure_js_1.getTaskCardHeight; } });
|
|
38
|
+
Object.defineProperty(exports, "wrapText", { enumerable: true, get: function () { return TaskCardMeasure_js_1.wrapText; } });
|
|
39
|
+
Object.defineProperty(exports, "safeTruncate", { enumerable: true, get: function () { return TaskCardMeasure_js_1.safeTruncate; } });
|
|
32
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,0GAAA,WAAW,OAAA;AACX,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AAUhB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,0GAAA,WAAW,OAAA;AACX,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AAUhB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAGrB,qDAA4D;AAAnD,+GAAA,YAAY,OAAA;AAAE,4GAAA,SAAS,OAAA;AAGhC,2DAAkG;AAAzF,qHAAA,eAAe,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAAE,8GAAA,QAAQ,OAAA;AAAE,kHAAA,YAAY,OAAA"}
|
package/dist/tui/types.d.ts
CHANGED
package/dist/tui/types.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FOOTER_ROWS = exports.HEADER_ROWS = void 0;
|
|
4
4
|
exports.HEADER_ROWS = 7; // title(1) + progress(3: padTop+content+padBottom) + tabs(2: marginTop+content) + separator(1)
|
|
5
|
-
exports.FOOTER_ROWS =
|
|
5
|
+
exports.FOOTER_ROWS = 4; // separator(1) + status message(1) + status bar(2)
|
|
6
6
|
//# sourceMappingURL=types.js.map
|
package/dist/tui/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":";;;AAqFa,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,+FAA+F;AAChH,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":";;;AAqFa,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,+FAA+F;AAChH,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,mDAAmD"}
|