brainfile 0.18.0 → 0.19.0

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.
Files changed (245) hide show
  1. package/README.md +4 -4
  2. package/dist/__tests__/helpers/mcp.d.ts +34 -0
  3. package/dist/__tests__/helpers/mcp.d.ts.map +1 -0
  4. package/dist/__tests__/helpers/mcp.js +37 -0
  5. package/dist/__tests__/helpers/mcp.js.map +1 -0
  6. package/dist/chunk-I5SJHUZK.mjs +52 -0
  7. package/dist/chunk-YTFLC673.mjs +12089 -0
  8. package/dist/cli.js +8 -479
  9. package/dist/cli.mjs +41194 -0
  10. package/dist/commands/add.d.ts.map +1 -1
  11. package/dist/commands/add.js +28 -37
  12. package/dist/commands/add.js.map +1 -1
  13. package/dist/commands/archive.d.ts +3 -2
  14. package/dist/commands/archive.d.ts.map +1 -1
  15. package/dist/commands/archive.js +16 -205
  16. package/dist/commands/archive.js.map +1 -1
  17. package/dist/commands/complete.d.ts +0 -4
  18. package/dist/commands/complete.d.ts.map +1 -1
  19. package/dist/commands/complete.js +14 -168
  20. package/dist/commands/complete.js.map +1 -1
  21. package/dist/commands/contract.d.ts.map +1 -1
  22. package/dist/commands/contract.js +66 -331
  23. package/dist/commands/contract.js.map +1 -1
  24. package/dist/commands/delete.d.ts.map +1 -1
  25. package/dist/commands/delete.js +13 -55
  26. package/dist/commands/delete.js.map +1 -1
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +3 -2
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/list.d.ts.map +1 -1
  31. package/dist/commands/list.js +3 -54
  32. package/dist/commands/list.js.map +1 -1
  33. package/dist/commands/log.js +2 -8
  34. package/dist/commands/log.js.map +1 -1
  35. package/dist/commands/mcp.d.ts.map +1 -1
  36. package/dist/commands/mcp.js +22 -17
  37. package/dist/commands/mcp.js.map +1 -1
  38. package/dist/commands/migrate.d.ts.map +1 -1
  39. package/dist/commands/migrate.js +4 -3
  40. package/dist/commands/migrate.js.map +1 -1
  41. package/dist/commands/move.d.ts.map +1 -1
  42. package/dist/commands/move.js +31 -126
  43. package/dist/commands/move.js.map +1 -1
  44. package/dist/commands/patch.d.ts.map +1 -1
  45. package/dist/commands/patch.js +22 -92
  46. package/dist/commands/patch.js.map +1 -1
  47. package/dist/commands/plan.d.ts +61 -0
  48. package/dist/commands/plan.d.ts.map +1 -0
  49. package/dist/commands/plan.js +205 -0
  50. package/dist/commands/plan.js.map +1 -0
  51. package/dist/commands/search.d.ts.map +1 -1
  52. package/dist/commands/search.js +20 -146
  53. package/dist/commands/search.js.map +1 -1
  54. package/dist/commands/show.d.ts.map +1 -1
  55. package/dist/commands/show.js +5 -126
  56. package/dist/commands/show.js.map +1 -1
  57. package/dist/commands/subtask.d.ts.map +1 -1
  58. package/dist/commands/subtask.js +19 -135
  59. package/dist/commands/subtask.js.map +1 -1
  60. package/dist/commands/types.d.ts +2 -2
  61. package/dist/commands/types.d.ts.map +1 -1
  62. package/dist/commands/types.js +8 -30
  63. package/dist/commands/types.js.map +1 -1
  64. package/dist/devtools-NE5M3KPM.mjs +92 -0
  65. package/dist/lib/contractRunner.d.ts.map +1 -1
  66. package/dist/lib/contractRunner.js +19 -205
  67. package/dist/lib/contractRunner.js.map +1 -1
  68. package/dist/mcp/helpers.d.ts +11 -16
  69. package/dist/mcp/helpers.d.ts.map +1 -1
  70. package/dist/mcp/helpers.js +9 -46
  71. package/dist/mcp/helpers.js.map +1 -1
  72. package/dist/mcp/tools/contract_tool.d.ts +1 -1
  73. package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
  74. package/dist/mcp/tools/contract_tool.js +23 -175
  75. package/dist/mcp/tools/contract_tool.js.map +1 -1
  76. package/dist/mcp/tools/get_task_tool.d.ts +1 -1
  77. package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
  78. package/dist/mcp/tools/get_task_tool.js +15 -34
  79. package/dist/mcp/tools/get_task_tool.js.map +1 -1
  80. package/dist/mcp/tools/list_tasks_tool.d.ts +1 -1
  81. package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
  82. package/dist/mcp/tools/list_tasks_tool.js +11 -48
  83. package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
  84. package/dist/mcp/tools/search_tool.d.ts +1 -1
  85. package/dist/mcp/tools/search_tool.d.ts.map +1 -1
  86. package/dist/mcp/tools/search_tool.js +17 -98
  87. package/dist/mcp/tools/search_tool.js.map +1 -1
  88. package/dist/mcp/tools/subtask_tool.d.ts +1 -1
  89. package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
  90. package/dist/mcp/tools/subtask_tool.js +49 -224
  91. package/dist/mcp/tools/subtask_tool.js.map +1 -1
  92. package/dist/mcp/tools/task_add_tool.d.ts +1 -1
  93. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
  94. package/dist/mcp/tools/task_add_tool.js +58 -154
  95. package/dist/mcp/tools/task_add_tool.js.map +1 -1
  96. package/dist/mcp/tools/task_complete_tool.d.ts +1 -1
  97. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
  98. package/dist/mcp/tools/task_complete_tool.js +28 -124
  99. package/dist/mcp/tools/task_complete_tool.js.map +1 -1
  100. package/dist/mcp/tools/task_delete_tool.d.ts +1 -1
  101. package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
  102. package/dist/mcp/tools/task_delete_tool.js +14 -33
  103. package/dist/mcp/tools/task_delete_tool.js.map +1 -1
  104. package/dist/mcp/tools/task_move_tool.d.ts +1 -1
  105. package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
  106. package/dist/mcp/tools/task_move_tool.js +44 -150
  107. package/dist/mcp/tools/task_move_tool.js.map +1 -1
  108. package/dist/mcp/tools/task_patch_tool.d.ts +1 -1
  109. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
  110. package/dist/mcp/tools/task_patch_tool.js +37 -113
  111. package/dist/mcp/tools/task_patch_tool.js.map +1 -1
  112. package/dist/open-ZGSQIGEH.mjs +542 -0
  113. package/dist/tui-P56H4X7N.mjs +23715 -0
  114. package/dist/utils/dot-brainfile.d.ts +0 -4
  115. package/dist/utils/dot-brainfile.d.ts.map +1 -1
  116. package/dist/utils/dot-brainfile.js +0 -17
  117. package/dist/utils/dot-brainfile.js.map +1 -1
  118. package/dist/utils/errorHandler.d.ts +7 -11
  119. package/dist/utils/errorHandler.d.ts.map +1 -1
  120. package/dist/utils/errorHandler.js +8 -19
  121. package/dist/utils/errorHandler.js.map +1 -1
  122. package/package.json +24 -16
  123. package/dist/cli.d.ts +0 -3
  124. package/dist/cli.d.ts.map +0 -1
  125. package/dist/cli.js.map +0 -1
  126. package/dist/commands/tui.d.ts +0 -6
  127. package/dist/commands/tui.d.ts.map +0 -1
  128. package/dist/commands/tui.js +0 -79
  129. package/dist/commands/tui.js.map +0 -1
  130. package/dist/tui/BrainfileTUI.d.ts +0 -4
  131. package/dist/tui/BrainfileTUI.d.ts.map +0 -1
  132. package/dist/tui/BrainfileTUI.js +0 -272
  133. package/dist/tui/BrainfileTUI.js.map +0 -1
  134. package/dist/tui/actions.d.ts +0 -84
  135. package/dist/tui/actions.d.ts.map +0 -1
  136. package/dist/tui/actions.js +0 -1251
  137. package/dist/tui/actions.js.map +0 -1
  138. package/dist/tui/components/ColumnTabs.d.ts +0 -9
  139. package/dist/tui/components/ColumnTabs.d.ts.map +0 -1
  140. package/dist/tui/components/ColumnTabs.js +0 -34
  141. package/dist/tui/components/ColumnTabs.js.map +0 -1
  142. package/dist/tui/components/Header.d.ts +0 -15
  143. package/dist/tui/components/Header.d.ts.map +0 -1
  144. package/dist/tui/components/Header.js +0 -48
  145. package/dist/tui/components/Header.js.map +0 -1
  146. package/dist/tui/components/HelpOverlay.d.ts +0 -9
  147. package/dist/tui/components/HelpOverlay.d.ts.map +0 -1
  148. package/dist/tui/components/HelpOverlay.js +0 -116
  149. package/dist/tui/components/HelpOverlay.js.map +0 -1
  150. package/dist/tui/components/LogsPanel.d.ts +0 -16
  151. package/dist/tui/components/LogsPanel.d.ts.map +0 -1
  152. package/dist/tui/components/LogsPanel.js +0 -115
  153. package/dist/tui/components/LogsPanel.js.map +0 -1
  154. package/dist/tui/components/MainPanelTabs.d.ts +0 -10
  155. package/dist/tui/components/MainPanelTabs.d.ts.map +0 -1
  156. package/dist/tui/components/MainPanelTabs.js +0 -56
  157. package/dist/tui/components/MainPanelTabs.js.map +0 -1
  158. package/dist/tui/components/ManualBorder.d.ts +0 -42
  159. package/dist/tui/components/ManualBorder.d.ts.map +0 -1
  160. package/dist/tui/components/ManualBorder.js +0 -56
  161. package/dist/tui/components/ManualBorder.js.map +0 -1
  162. package/dist/tui/components/Overlays.d.ts +0 -41
  163. package/dist/tui/components/Overlays.d.ts.map +0 -1
  164. package/dist/tui/components/Overlays.js +0 -127
  165. package/dist/tui/components/Overlays.js.map +0 -1
  166. package/dist/tui/components/ProgressBar.d.ts +0 -8
  167. package/dist/tui/components/ProgressBar.d.ts.map +0 -1
  168. package/dist/tui/components/ProgressBar.js +0 -35
  169. package/dist/tui/components/ProgressBar.js.map +0 -1
  170. package/dist/tui/components/RulesPanel.d.ts +0 -25
  171. package/dist/tui/components/RulesPanel.d.ts.map +0 -1
  172. package/dist/tui/components/RulesPanel.js +0 -139
  173. package/dist/tui/components/RulesPanel.js.map +0 -1
  174. package/dist/tui/components/SearchBar.d.ts +0 -8
  175. package/dist/tui/components/SearchBar.d.ts.map +0 -1
  176. package/dist/tui/components/SearchBar.js +0 -38
  177. package/dist/tui/components/SearchBar.js.map +0 -1
  178. package/dist/tui/components/StackedTaskList.d.ts +0 -27
  179. package/dist/tui/components/StackedTaskList.d.ts.map +0 -1
  180. package/dist/tui/components/StackedTaskList.js +0 -120
  181. package/dist/tui/components/StackedTaskList.js.map +0 -1
  182. package/dist/tui/components/StatusBar.d.ts +0 -14
  183. package/dist/tui/components/StatusBar.d.ts.map +0 -1
  184. package/dist/tui/components/StatusBar.js +0 -42
  185. package/dist/tui/components/StatusBar.js.map +0 -1
  186. package/dist/tui/components/TaskCard.d.ts +0 -25
  187. package/dist/tui/components/TaskCard.d.ts.map +0 -1
  188. package/dist/tui/components/TaskCard.js +0 -221
  189. package/dist/tui/components/TaskCard.js.map +0 -1
  190. package/dist/tui/components/TaskCardMeasure.d.ts +0 -31
  191. package/dist/tui/components/TaskCardMeasure.d.ts.map +0 -1
  192. package/dist/tui/components/TaskCardMeasure.js +0 -133
  193. package/dist/tui/components/TaskCardMeasure.js.map +0 -1
  194. package/dist/tui/components/TaskDetail.d.ts +0 -13
  195. package/dist/tui/components/TaskDetail.d.ts.map +0 -1
  196. package/dist/tui/components/TaskDetail.js +0 -64
  197. package/dist/tui/components/TaskDetail.js.map +0 -1
  198. package/dist/tui/components/TaskList.d.ts +0 -12
  199. package/dist/tui/components/TaskList.d.ts.map +0 -1
  200. package/dist/tui/components/TaskList.js +0 -75
  201. package/dist/tui/components/TaskList.js.map +0 -1
  202. package/dist/tui/components/index.d.ts +0 -31
  203. package/dist/tui/components/index.d.ts.map +0 -1
  204. package/dist/tui/components/index.js +0 -43
  205. package/dist/tui/components/index.js.map +0 -1
  206. package/dist/tui/hooks/index.d.ts +0 -3
  207. package/dist/tui/hooks/index.d.ts.map +0 -1
  208. package/dist/tui/hooks/index.js +0 -8
  209. package/dist/tui/hooks/index.js.map +0 -1
  210. package/dist/tui/hooks/useBrainfileLoader.d.ts +0 -5
  211. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +0 -1
  212. package/dist/tui/hooks/useBrainfileLoader.js +0 -237
  213. package/dist/tui/hooks/useBrainfileLoader.js.map +0 -1
  214. package/dist/tui/hooks/useKeyboardNavigation.d.ts +0 -20
  215. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +0 -1
  216. package/dist/tui/hooks/useKeyboardNavigation.js +0 -806
  217. package/dist/tui/hooks/useKeyboardNavigation.js.map +0 -1
  218. package/dist/tui/index.d.ts +0 -10
  219. package/dist/tui/index.d.ts.map +0 -1
  220. package/dist/tui/index.js +0 -38
  221. package/dist/tui/index.js.map +0 -1
  222. package/dist/tui/theme.d.ts +0 -119
  223. package/dist/tui/theme.d.ts.map +0 -1
  224. package/dist/tui/theme.js +0 -138
  225. package/dist/tui/theme.js.map +0 -1
  226. package/dist/tui/types.d.ts +0 -53
  227. package/dist/tui/types.d.ts.map +0 -1
  228. package/dist/tui/types.js +0 -12
  229. package/dist/tui/types.js.map +0 -1
  230. package/dist/tui/utils.d.ts +0 -24
  231. package/dist/tui/utils.d.ts.map +0 -1
  232. package/dist/tui/utils.js +0 -161
  233. package/dist/tui/utils.js.map +0 -1
  234. package/dist/utils/board-types.d.ts +0 -13
  235. package/dist/utils/board-types.d.ts.map +0 -1
  236. package/dist/utils/board-types.js +0 -7
  237. package/dist/utils/board-types.js.map +0 -1
  238. package/dist/utils/contractSpec.d.ts +0 -13
  239. package/dist/utils/contractSpec.d.ts.map +0 -1
  240. package/dist/utils/contractSpec.js +0 -61
  241. package/dist/utils/contractSpec.js.map +0 -1
  242. package/dist/utils/strict-validation.d.ts +0 -8
  243. package/dist/utils/strict-validation.d.ts.map +0 -1
  244. package/dist/utils/strict-validation.js +0 -41
  245. package/dist/utils/strict-validation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MainPanelTabs.js","sourceRoot":"","sources":["../../../src/tui/components/MainPanelTabs.tsx"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,56 +0,0 @@
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
@@ -1 +0,0 @@
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,41 +0,0 @@
1
- /**
2
- * Overlays - Modal-like UI components for task management
3
- *
4
- * - MoveOverlay: Column picker for moving tasks
5
- * - DeleteConfirmOverlay: Confirmation prompt for deletion
6
- * - SubtaskOverlay: Subtask picker for toggling completion
7
- * - StatusMessage: Toast-like feedback messages
8
- */
9
- import React from 'react';
10
- import type { StatusMessage as StatusMessageType, BoardColumn } from '../types.js';
11
- import type { Task } from '@brainfile/core';
12
- export interface StatusMessageProps {
13
- message: StatusMessageType | null;
14
- }
15
- export declare function StatusMessageDisplay({ message }: StatusMessageProps): React.JSX.Element | null;
16
- export interface MoveOverlayProps {
17
- columns: BoardColumn[];
18
- selectedIndex: number;
19
- taskTitle: string;
20
- termWidth: number;
21
- }
22
- export declare function MoveOverlay({ columns, selectedIndex, taskTitle, termWidth }: MoveOverlayProps): React.JSX.Element;
23
- export interface DeleteConfirmOverlayProps {
24
- taskId: string;
25
- taskTitle: string;
26
- termWidth: number;
27
- }
28
- export declare function DeleteConfirmOverlay({ taskId, taskTitle, termWidth }: DeleteConfirmOverlayProps): React.JSX.Element;
29
- export interface NewTaskOverlayProps {
30
- title: string;
31
- columnName: string;
32
- termWidth: number;
33
- }
34
- export declare function NewTaskOverlay({ title, columnName, termWidth }: NewTaskOverlayProps): React.JSX.Element;
35
- export interface SubtaskOverlayProps {
36
- task: Task;
37
- selectedIndex: number;
38
- termWidth: number;
39
- }
40
- export declare function SubtaskOverlay({ task, selectedIndex, termWidth }: SubtaskOverlayProps): React.JSX.Element;
41
- //# sourceMappingURL=Overlays.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Overlays.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Overlays.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,4BAoBnE;AAGD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,gBAAgB,qBA6C7F;AAGD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,yBAAyB,qBA8B/F;AAGD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB,qBA2BnF;AAGD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,mBAAmB,qBAgDrF"}
@@ -1,127 +0,0 @@
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.StatusMessageDisplay = StatusMessageDisplay;
7
- exports.MoveOverlay = MoveOverlay;
8
- exports.DeleteConfirmOverlay = DeleteConfirmOverlay;
9
- exports.NewTaskOverlay = NewTaskOverlay;
10
- exports.SubtaskOverlay = SubtaskOverlay;
11
- /**
12
- * Overlays - Modal-like UI components for task management
13
- *
14
- * - MoveOverlay: Column picker for moving tasks
15
- * - DeleteConfirmOverlay: Confirmation prompt for deletion
16
- * - SubtaskOverlay: Subtask picker for toggling completion
17
- * - StatusMessage: Toast-like feedback messages
18
- */
19
- const react_1 = __importDefault(require("react"));
20
- const ink_1 = require("ink");
21
- const theme_js_1 = require("../theme.js");
22
- const utils_js_1 = require("../utils.js");
23
- function StatusMessageDisplay({ message }) {
24
- if (!message)
25
- return null;
26
- const color = message.type === 'success'
27
- ? theme_js_1.PALETTE.success
28
- : message.type === 'error'
29
- ? theme_js_1.PALETTE.error
30
- : theme_js_1.PALETTE.accent;
31
- const icon = message.type === 'success'
32
- ? '✓'
33
- : message.type === 'error'
34
- ? '✗'
35
- : '●';
36
- return (react_1.default.createElement(ink_1.Box, { paddingLeft: 1 },
37
- react_1.default.createElement(ink_1.Text, { color: color },
38
- icon,
39
- " ",
40
- message.text)));
41
- }
42
- function MoveOverlay({ columns, selectedIndex, taskTitle, termWidth }) {
43
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: theme_js_1.PALETTE.accent, paddingX: 2, paddingY: 1, marginX: 2 },
44
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, bold: true }, "Move Task"),
45
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, (0, utils_js_1.truncate)(taskTitle, termWidth - 10)),
46
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
47
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, "Select column: "),
48
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
49
- '←/→ or 1-',
50
- columns.length)),
51
- react_1.default.createElement(ink_1.Box, { marginTop: 1 }, columns.map((col, idx) => {
52
- const isSelected = idx === selectedIndex;
53
- return (react_1.default.createElement(ink_1.Box, { key: col.id, marginRight: 1 }, isSelected ? (react_1.default.createElement(ink_1.Text, { backgroundColor: theme_js_1.PALETTE.accent, color: theme_js_1.PALETTE.bg, bold: true }, ` ${idx + 1}:${col.title} `)) : (react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, ` ${idx + 1}:${col.title} `))));
54
- })),
55
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
56
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
57
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success }, "ENTER"),
58
- " confirm",
59
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.warning }, " ESC"),
60
- " cancel"))));
61
- }
62
- function DeleteConfirmOverlay({ taskId, taskTitle, termWidth }) {
63
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: theme_js_1.PALETTE.error, paddingX: 2, paddingY: 1, marginX: 2 },
64
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.error, bold: true }, "Delete Task?"),
65
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
66
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, (0, utils_js_1.truncate)(taskTitle, termWidth - 10)),
67
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
68
- " (",
69
- taskId,
70
- ")")),
71
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
72
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, "This action cannot be undone.")),
73
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
74
- react_1.default.createElement(ink_1.Text, null,
75
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.error, bold: true }, "Y"),
76
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, " delete "),
77
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success, bold: true }, "N"),
78
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, " cancel")))));
79
- }
80
- function NewTaskOverlay({ title, columnName, termWidth }) {
81
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: theme_js_1.PALETTE.accent, paddingX: 2, paddingY: 1, marginX: 2 },
82
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, bold: true }, "New Task"),
83
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
84
- "Adding to ",
85
- columnName),
86
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
87
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, '❯ '),
88
- react_1.default.createElement(ink_1.Text, { color: title ? theme_js_1.PALETTE.text : theme_js_1.PALETTE.textMuted }, title || 'Enter task title...'),
89
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, '▌')),
90
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
91
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
92
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success }, "ENTER"),
93
- " create",
94
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.warning }, " ESC"),
95
- " cancel"))));
96
- }
97
- function SubtaskOverlay({ task, selectedIndex, termWidth }) {
98
- const subtasks = task.subtasks || [];
99
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: theme_js_1.PALETTE.accent, paddingX: 2, paddingY: 1, marginX: 2 },
100
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, bold: true }, "Toggle Subtask"),
101
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, (0, utils_js_1.truncate)(task.title, termWidth - 10)),
102
- react_1.default.createElement(ink_1.Box, { marginTop: 1, flexDirection: "column" }, subtasks.map((st, idx) => {
103
- const isSelected = idx === selectedIndex;
104
- const checkmark = st.completed ? '✓' : '○';
105
- const textColor = st.completed ? theme_js_1.PALETTE.success : theme_js_1.PALETTE.textSecondary;
106
- return (react_1.default.createElement(ink_1.Box, { key: st.id }, isSelected ? (react_1.default.createElement(ink_1.Text, { backgroundColor: theme_js_1.PALETTE.bgHighlight },
107
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, '▸ '),
108
- react_1.default.createElement(ink_1.Text, { color: textColor },
109
- checkmark,
110
- " ",
111
- (0, utils_js_1.truncate)(st.title, termWidth - 14)))) : (react_1.default.createElement(ink_1.Text, null,
112
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, ' '),
113
- react_1.default.createElement(ink_1.Text, { color: textColor },
114
- checkmark,
115
- " ",
116
- (0, utils_js_1.truncate)(st.title, termWidth - 14))))));
117
- })),
118
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
119
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
120
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "\u2191/\u2193"),
121
- " select",
122
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success }, " ENTER/SPACE"),
123
- " toggle",
124
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.warning }, " ESC"),
125
- " close"))));
126
- }
127
- //# sourceMappingURL=Overlays.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Overlays.js","sourceRoot":"","sources":["../../../src/tui/components/Overlays.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- export interface ProgressBarProps {
3
- done: number;
4
- total: number;
5
- width: number;
6
- }
7
- export declare function ProgressBar({ done, total, width }: ProgressBarProps): React.JSX.Element;
8
- //# sourceMappingURL=ProgressBar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,qBAyBnE"}
@@ -1,35 +0,0 @@
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.ProgressBar = ProgressBar;
7
- const react_1 = __importDefault(require("react"));
8
- const ink_1 = require("ink");
9
- const theme_js_1 = require("../theme.js");
10
- function ProgressBar({ done, total, width }) {
11
- const percentage = total > 0 ? Math.round((done / total) * 100) : 0;
12
- // Reserve space for: padding + "XX% " + " X of Y complete"
13
- const textWidth = 20 + String(done).length + String(total).length;
14
- const barWidth = Math.max(width - textWidth, 20);
15
- const filled = Math.round((percentage / 100) * barWidth);
16
- const empty = barWidth - filled;
17
- // Color the percentage based on completion
18
- const percentColor = percentage === 100 ? theme_js_1.PALETTE.success :
19
- percentage >= 50 ? theme_js_1.PALETTE.progress :
20
- theme_js_1.PALETTE.textMuted;
21
- return (react_1.default.createElement(ink_1.Box, { paddingLeft: 2, paddingTop: 1, paddingBottom: 1 },
22
- react_1.default.createElement(ink_1.Text, { color: percentColor, bold: true },
23
- percentage,
24
- "%"),
25
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, " "),
26
- filled > 0 && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success }, theme_js_1.ICONS.progressFilled.repeat(filled)),
27
- empty > 0 && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.border }, theme_js_1.ICONS.progressEmpty.repeat(empty)),
28
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
29
- " ",
30
- done),
31
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, "/"),
32
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, total),
33
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, " complete")));
34
- }
35
- //# sourceMappingURL=ProgressBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../src/tui/components/ProgressBar.tsx"],"names":[],"mappings":";;;;;AAUA,kCAyBC;AAnCD,kDAA0B;AAC1B,6BAAgC;AAChC,0CAA6C;AAQ7C,SAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAoB;IAClE,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,2DAA2D;IAC3D,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEhC,2CAA2C;IAC3C,MAAM,YAAY,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,kBAAO,CAAC,OAAO,CAAC,CAAC;QACtC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,QAAQ,CAAC,CAAC;YACrC,kBAAO,CAAC,SAAS,CAAC;IAEvC,OAAO,CACL,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;QAClD,8BAAC,UAAI,IAAC,KAAK,EAAE,YAAY,EAAE,IAAI;YAAE,UAAU;gBAAS;QACpD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,QAAU;QACvC,MAAM,GAAG,CAAC,IAAI,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,IAAG,gBAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAQ;QACxF,KAAK,GAAG,CAAC,IAAI,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,IAAG,gBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAQ;QACrF,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa;;YAAI,IAAI,CAAQ;QAClD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,QAAU;QACxC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,IAAG,KAAK,CAAQ;QAClD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,gBAAkB,CAC5C,CACP,CAAC;AACJ,CAAC"}
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- import type { RuleType, LayoutMode } from '../types.js';
3
- interface Rule {
4
- id: number;
5
- rule: string;
6
- }
7
- interface Rules {
8
- always?: Rule[];
9
- never?: Rule[];
10
- prefer?: Rule[];
11
- context?: Rule[];
12
- }
13
- export interface RulesPanelProps {
14
- rules: Rules | undefined;
15
- activeRuleType: RuleType;
16
- selectedRuleIndex: number;
17
- viewportHeight: number;
18
- termWidth: number;
19
- mode: string;
20
- editText?: string;
21
- layoutMode?: LayoutMode;
22
- }
23
- export declare function RulesPanel({ rules, activeRuleType, selectedRuleIndex, viewportHeight, termWidth, mode, editText, layoutMode, }: RulesPanelProps): React.JSX.Element;
24
- export {};
25
- //# sourceMappingURL=RulesPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RulesPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/RulesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGxD,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,cAAc,EAAE,QAAQ,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAkBD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,UAAmB,GACpB,EAAE,eAAe,qBA8JjB"}
@@ -1,139 +0,0 @@
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.RulesPanel = RulesPanel;
7
- const react_1 = __importDefault(require("react"));
8
- const ink_1 = require("ink");
9
- const theme_js_1 = require("../theme.js");
10
- const utils_js_1 = require("../utils.js");
11
- const RULE_TYPES = ['always', 'never', 'prefer', 'context'];
12
- const RULE_TYPE_LABELS = {
13
- always: 'Always',
14
- never: 'Never',
15
- prefer: 'Prefer',
16
- context: 'Context',
17
- };
18
- const RULE_TYPE_COLORS = {
19
- always: theme_js_1.PALETTE.success,
20
- never: theme_js_1.PALETTE.error,
21
- prefer: theme_js_1.PALETTE.warning,
22
- context: theme_js_1.PALETTE.accent,
23
- };
24
- function RulesPanel({ rules, activeRuleType, selectedRuleIndex, viewportHeight, termWidth, mode, editText, layoutMode = 'wide', }) {
25
- const currentRules = rules?.[activeRuleType] || [];
26
- const maxWidth = Math.max(termWidth - 8, 20);
27
- // Calculate scroll offset for rules list
28
- const scrollPadding = 2;
29
- const headerRows = layoutMode === 'narrow' ? 4 : 6; // Compact header in narrow mode
30
- const visibleRules = Math.max(viewportHeight - headerRows, 3);
31
- let scrollOffset = 0;
32
- if (selectedRuleIndex >= visibleRules - scrollPadding) {
33
- scrollOffset = Math.min(selectedRuleIndex - visibleRules + scrollPadding + 1, Math.max(0, currentRules.length - visibleRules));
34
- }
35
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", paddingX: 1 },
36
- layoutMode === 'narrow' ? (react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
37
- RULE_TYPES.map((type) => {
38
- const count = rules?.[type]?.length || 0;
39
- const isActive = type === activeRuleType;
40
- const initial = RULE_TYPE_LABELS[type].charAt(0);
41
- return (react_1.default.createElement(ink_1.Text, { key: type },
42
- react_1.default.createElement(ink_1.Text, { color: isActive ? RULE_TYPE_COLORS[type] : theme_js_1.PALETTE.textDim, bold: isActive }, initial),
43
- count > 0 && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
44
- "(",
45
- count,
46
- ")"),
47
- react_1.default.createElement(ink_1.Text, null, ' ')));
48
- }),
49
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "h/l"))) : (react_1.default.createElement(ink_1.Box, { marginBottom: 1 }, RULE_TYPES.map((type, idx) => {
50
- const count = rules?.[type]?.length || 0;
51
- const isActive = type === activeRuleType;
52
- return (react_1.default.createElement(ink_1.Box, { key: type, marginRight: 2 },
53
- react_1.default.createElement(ink_1.Text, { color: isActive ? RULE_TYPE_COLORS[type] : theme_js_1.PALETTE.textMuted, bold: isActive, inverse: isActive },
54
- ' ',
55
- RULE_TYPE_LABELS[type],
56
- count > 0 && react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
57
- " (",
58
- count,
59
- ")"),
60
- ' '),
61
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
62
- " [",
63
- idx + 1,
64
- "]")));
65
- }))),
66
- layoutMode === 'wide' && (react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
67
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
68
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "h/l"),
69
- " switch type",
70
- ' ',
71
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "j/k"),
72
- " select",
73
- ' ',
74
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "n"),
75
- " new",
76
- ' ',
77
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "e"),
78
- " edit",
79
- ' ',
80
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "d"),
81
- " delete"))),
82
- react_1.default.createElement(ink_1.Box, null,
83
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.border }, theme_js_1.BOX.horizontal.repeat(Math.max(1, termWidth - 4)))),
84
- (mode === 'rule-add' || mode === 'rule-edit') && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginY: 1 },
85
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, mode === 'rule-add' ? 'New rule:' : 'Edit rule:'),
86
- react_1.default.createElement(ink_1.Box, { marginTop: 0 },
87
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, backgroundColor: theme_js_1.PALETTE.bgHighlight },
88
- ' ',
89
- editText || ' ',
90
- theme_js_1.ICONS.cursor,
91
- ' ')),
92
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted, dimColor: true }, "Enter to save, Esc to cancel"))),
93
- mode === 'rule-delete-confirm' && currentRules[selectedRuleIndex] && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginY: 1, paddingX: 1 },
94
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.error, bold: true },
95
- "Delete this ",
96
- activeRuleType,
97
- " rule?"),
98
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
99
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
100
- "#",
101
- currentRules[selectedRuleIndex].id,
102
- ": ",
103
- (0, utils_js_1.truncate)(currentRules[selectedRuleIndex].rule, maxWidth - 10))),
104
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
105
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
106
- "Press ",
107
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.success }, "y"),
108
- " to confirm, ",
109
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.error }, "n"),
110
- " to cancel")))),
111
- mode !== 'rule-add' && mode !== 'rule-edit' && mode !== 'rule-delete-confirm' && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: 1 },
112
- currentRules.length === 0 ? (react_1.default.createElement(ink_1.Box, { paddingY: 1 },
113
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
114
- "No ",
115
- activeRuleType,
116
- " rules defined. Press ",
117
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, "n"),
118
- " to add one."))) : (currentRules.slice(scrollOffset, scrollOffset + visibleRules).map((rule, displayIdx) => {
119
- const actualIdx = scrollOffset + displayIdx;
120
- const isSelected = actualIdx === selectedRuleIndex;
121
- return (react_1.default.createElement(ink_1.Box, { key: rule.id, paddingY: 0 },
122
- react_1.default.createElement(ink_1.Text, { color: isSelected ? theme_js_1.PALETTE.text : theme_js_1.PALETTE.textSecondary, backgroundColor: isSelected ? theme_js_1.PALETTE.bgHighlight : undefined, bold: isSelected },
123
- isSelected ? theme_js_1.ICONS.pointer : ' ',
124
- ' ',
125
- react_1.default.createElement(ink_1.Text, { color: RULE_TYPE_COLORS[activeRuleType] },
126
- "#",
127
- rule.id),
128
- ' ',
129
- (0, utils_js_1.truncate)(rule.rule, maxWidth - 8))));
130
- })),
131
- currentRules.length > visibleRules && (react_1.default.createElement(ink_1.Box, { marginTop: 1 },
132
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
133
- scrollOffset + 1,
134
- "-",
135
- Math.min(scrollOffset + visibleRules, currentRules.length),
136
- " of ",
137
- currentRules.length)))))));
138
- }
139
- //# sourceMappingURL=RulesPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RulesPanel.js","sourceRoot":"","sources":["../../../src/tui/components/RulesPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- export interface SearchBarProps {
3
- query: string;
4
- width: number;
5
- showHints?: boolean;
6
- }
7
- export declare function SearchBar({ query, width, showHints }: SearchBarProps): React.JSX.Element;
8
- //# sourceMappingURL=SearchBar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAgB,EAAE,EAAE,cAAc,qBAgC3E"}
@@ -1,38 +0,0 @@
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.SearchBar = SearchBar;
7
- const react_1 = __importDefault(require("react"));
8
- const ink_1 = require("ink");
9
- const theme_js_1 = require("../theme.js");
10
- function SearchBar({ query, width, showHints = true }) {
11
- const inputWidth = Math.min(width - 6, 60);
12
- const displayQuery = query.padEnd(inputWidth, ' ').slice(0, inputWidth);
13
- // Show hints when query is empty
14
- const showFilterHints = showHints && query.length === 0;
15
- return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", paddingLeft: 1, marginTop: 0 },
16
- react_1.default.createElement(ink_1.Box, null,
17
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent },
18
- theme_js_1.ICONS.search,
19
- " "),
20
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, backgroundColor: theme_js_1.PALETTE.bgHighlight },
21
- " ",
22
- displayQuery,
23
- " ")),
24
- showFilterHints && (react_1.default.createElement(ink_1.Box, { marginTop: 0, marginLeft: 3 },
25
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
26
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "filters: "),
27
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "p:"),
28
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "priority "),
29
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "#"),
30
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "tag "),
31
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "@"),
32
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "assignee "),
33
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "due:"),
34
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "overdue|today|week "),
35
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "contract:"),
36
- react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "ready|in_progress|delivered|done|failed"))))));
37
- }
38
- //# sourceMappingURL=SearchBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":";;;;;AAUA,8BAgCC;AA1CD,kDAA0B;AAC1B,6BAAgC;AAChC,0CAA6C;AAQ7C,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAkB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAExE,iCAAiC;IACjC,MAAM,eAAe,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAExD,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACtD,8BAAC,SAAG;YACF,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM;gBAAG,gBAAK,CAAC,MAAM;oBAAS;YACnD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAO,CAAC,WAAW;;gBAAI,YAAY;oBAAS,CACpF;QACL,eAAe,IAAI,CAClB,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC9B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;gBAC5B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,SAAW;gBAC7C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,WAAa;gBACzC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,WAAa;gBAC/C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,0BAA4B;gBACxD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,gBAAkB;gBACpD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,8CAAgD,CACvE,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC"}