epiq 0.0.2 → 0.0.4

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 (148) hide show
  1. package/dist/app.js +10 -4
  2. package/dist/board/components/Board.js +4 -12
  3. package/dist/board/components/CommandLine.d.ts +2 -0
  4. package/dist/board/components/CommandLine.js +26 -0
  5. package/dist/{components/Help.d.ts → board/components/ContextBar.d.ts} +1 -1
  6. package/dist/board/components/ContextBar.js +17 -0
  7. package/dist/board/components/Help.js +19 -12
  8. package/dist/board/components/Swimlane.d.ts +1 -0
  9. package/dist/board/components/Swimlane.js +6 -4
  10. package/dist/board/components/Swimlanes.js +8 -11
  11. package/dist/board/components/TextInput.d.ts +6 -0
  12. package/dist/board/components/TextInput.js +9 -0
  13. package/dist/board/components/TicketListItem.js +6 -5
  14. package/dist/board/components/TicketUI.js +6 -7
  15. package/dist/board/hints/hints.d.ts +7 -0
  16. package/dist/board/hints/hints.js +21 -0
  17. package/dist/board/mock/board.js +73 -27
  18. package/dist/cli.d.ts +2 -1
  19. package/dist/cli.js +21 -39
  20. package/dist/debug-logger.d.ts +2 -0
  21. package/dist/debug-logger.js +16 -0
  22. package/dist/init-project.d.ts +1 -0
  23. package/dist/init-project.js +1 -0
  24. package/dist/navigation/actions/add/add-actions.d.ts +2 -0
  25. package/dist/navigation/actions/add/add-actions.js +25 -0
  26. package/dist/navigation/actions/add/add-item-actions.d.ts +2 -0
  27. package/dist/navigation/actions/add/add-item-actions.js +25 -0
  28. package/dist/navigation/actions/add-item/add-item-actions.d.ts +3 -0
  29. package/dist/navigation/actions/add-item/add-item-actions.js +45 -0
  30. package/dist/navigation/actions/board-action-map.d.ts +10 -0
  31. package/dist/navigation/actions/board-action-map.js +12 -0
  32. package/dist/navigation/actions/default/default-action-utils.d.ts +8 -0
  33. package/dist/navigation/actions/default/default-action-utils.js +101 -0
  34. package/dist/navigation/actions/default/default-actions.d.ts +2 -0
  35. package/dist/navigation/actions/default/default-actions.js +64 -0
  36. package/dist/navigation/actions/default/navigation-action-utils.d.ts +16 -0
  37. package/dist/navigation/actions/default/navigation-action-utils.js +109 -0
  38. package/dist/navigation/actions/input/command-line-input.d.ts +2 -0
  39. package/dist/navigation/actions/input/command-line-input.js +18 -0
  40. package/dist/navigation/actions/input/input-actions-utils.d.ts +8 -0
  41. package/dist/navigation/actions/input/input-actions-utils.js +47 -0
  42. package/dist/navigation/actions/input/input-actions.d.ts +2 -0
  43. package/dist/navigation/actions/input/input-actions.js +44 -0
  44. package/dist/navigation/actions/move/move-actions-routes.d.ts +4 -0
  45. package/dist/navigation/actions/move/move-actions-routes.js +55 -0
  46. package/dist/navigation/actions/move/move-actions-utils.d.ts +4 -0
  47. package/dist/navigation/actions/move/move-actions-utils.js +66 -0
  48. package/dist/navigation/actions/move/move-actions.d.ts +4 -0
  49. package/dist/navigation/actions/move/move-actions.js +59 -0
  50. package/dist/{lib/utils/default-action-utils.d.ts → navigation/actions/navigate/navigation-action-utils.d.ts} +1 -1
  51. package/dist/navigation/actions/navigate/navigation-actions.d.ts +2 -0
  52. package/dist/navigation/actions/navigate/navigation-actions.js +78 -0
  53. package/dist/navigation/command-line/command-line-actions.d.ts +2 -0
  54. package/dist/navigation/command-line/command-line-actions.js +32 -0
  55. package/dist/navigation/command-line/command-line-intent.d.ts +7 -0
  56. package/dist/navigation/command-line/command-line-intent.js +29 -0
  57. package/dist/navigation/command-line/command-line-sequence-actions.d.ts +2 -0
  58. package/dist/navigation/command-line/command-line-sequence-actions.js +44 -0
  59. package/dist/navigation/command-line/command-line-sequence-intent.d.ts +8 -0
  60. package/dist/navigation/command-line/command-line-sequence-intent.js +32 -0
  61. package/dist/navigation/command-line/commands.d.ts +2 -0
  62. package/dist/navigation/command-line/commands.js +58 -0
  63. package/dist/navigation/keypress-listener.d.ts +1 -0
  64. package/dist/navigation/keypress-listener.js +33 -0
  65. package/dist/navigation/model/action-map.model.d.ts +17 -5
  66. package/dist/navigation/model/action-map.model.js +2 -0
  67. package/dist/navigation/model/navigation-ctx.model.d.ts +1 -16
  68. package/dist/navigation/model/navigation-ctx.model.js +0 -1
  69. package/dist/navigation/model/navigation-tree.model.d.ts +3 -1
  70. package/dist/navigation/navigation.d.ts +3 -10
  71. package/dist/navigation/navigation.js +74 -66
  72. package/dist/navigation/state/command-line.state.d.ts +18 -0
  73. package/dist/navigation/state/command-line.state.js +60 -0
  74. package/dist/navigation/state/state.d.ts +18 -9
  75. package/dist/navigation/state/state.js +36 -8
  76. package/dist/navigation/utils/get-command-line-intent.d.ts +3 -0
  77. package/dist/navigation/utils/get-command-line-intent.js +17 -0
  78. package/dist/navigation/utils/getKeyIntent.d.ts +5 -0
  79. package/dist/navigation/utils/getKeyIntent.js +71 -0
  80. package/dist/navigation/utils/key-intent.d.ts +21 -12
  81. package/dist/navigation/utils/key-intent.js +104 -50
  82. package/package.json +3 -3
  83. package/dist/board/actions/board-action-map.d.ts +0 -11
  84. package/dist/board/actions/board-action-map.js +0 -11
  85. package/dist/board/actions/move-actions-routes.d.ts +0 -4
  86. package/dist/board/actions/move-actions-routes.js +0 -31
  87. package/dist/board/actions/move-actions.d.ts +0 -5
  88. package/dist/board/actions/move-actions.js +0 -49
  89. package/dist/board/board-action-map.d.ts +0 -9
  90. package/dist/board/board-action-map.js +0 -7
  91. package/dist/board/move-actions-routes.d.ts +0 -4
  92. package/dist/board/move-actions-routes.js +0 -31
  93. package/dist/board/move-actions.d.ts +0 -5
  94. package/dist/board/move-actions.js +0 -49
  95. package/dist/components/Board.d.ts +0 -6
  96. package/dist/components/Board.js +0 -15
  97. package/dist/components/Help.js +0 -21
  98. package/dist/components/Swimlane.d.ts +0 -8
  99. package/dist/components/Swimlane.js +0 -10
  100. package/dist/components/TicketListItem.d.ts +0 -6
  101. package/dist/components/TicketListItem.js +0 -12
  102. package/dist/lib/actions/board-action-map.d.ts +0 -9
  103. package/dist/lib/actions/board-action-map.js +0 -7
  104. package/dist/lib/actions/move-actions-utils.d.ts +0 -5
  105. package/dist/lib/actions/move-actions-utils.js +0 -43
  106. package/dist/lib/actions/move-actions.d.ts +0 -4
  107. package/dist/lib/actions/move-actions.js +0 -31
  108. package/dist/lib/board/board-action-map.d.ts +0 -9
  109. package/dist/lib/board/board-action-map.js +0 -7
  110. package/dist/lib/board/move-actions-routes.d.ts +0 -4
  111. package/dist/lib/board/move-actions-routes.js +0 -31
  112. package/dist/lib/board/move-actions.d.ts +0 -5
  113. package/dist/lib/board/move-actions.js +0 -43
  114. package/dist/lib/board-utils.d.ts +0 -7
  115. package/dist/lib/board-utils.js +0 -33
  116. package/dist/lib/default-actions-routes.d.ts +0 -4
  117. package/dist/lib/default-actions-routes.js +0 -47
  118. package/dist/lib/default-actions.d.ts +0 -4
  119. package/dist/lib/default-actions.js +0 -47
  120. package/dist/lib/navigation-context.d.ts +0 -16
  121. package/dist/lib/navigation.d.ts +0 -10
  122. package/dist/lib/navigation.js +0 -74
  123. package/dist/lib/render-utils.d.ts +0 -10
  124. package/dist/lib/render-utils.js +0 -12
  125. package/dist/lib/state.d.ts +0 -8
  126. package/dist/lib/state.js +0 -8
  127. package/dist/lib/types/action-map.model.d.ts +0 -14
  128. package/dist/lib/types/action-map.model.js +0 -4
  129. package/dist/lib/types/board.model.d.ts +0 -21
  130. package/dist/lib/types/board.model.js +0 -5
  131. package/dist/lib/types/navigation.model.d.ts +0 -9
  132. package/dist/lib/utils/array-utils.d.ts +0 -5
  133. package/dist/lib/utils/array-utils.js +0 -7
  134. package/dist/lib/utils/default-action-utils.js +0 -50
  135. package/dist/lib/utils/default-actions.d.ts +0 -7
  136. package/dist/lib/utils/default-actions.js +0 -50
  137. package/dist/lib/utils/key-intent.d.ts +0 -16
  138. package/dist/lib/utils/key-intent.js +0 -65
  139. package/dist/lib/utils.d.ts +0 -10
  140. package/dist/lib/utils.js +0 -12
  141. package/dist/mock/board.d.ts +0 -2
  142. package/dist/mock/board.js +0 -139
  143. package/dist/navigation/actions/default-actions-routes.d.ts +0 -4
  144. package/dist/navigation/actions/default-actions-routes.js +0 -47
  145. package/dist/navigation/actions/default-actions.d.ts +0 -7
  146. /package/dist/navigation/actions/{default-actions.js → navigate/navigation-action-utils.js} +0 -0
  147. /package/dist/{lib/navigation-context.js → navigation/navigation-ctx.d.ts} +0 -0
  148. /package/dist/{lib/types/navigation.model.js → navigation/navigation-ctx.js} +0 -0
package/dist/app.js CHANGED
@@ -1,12 +1,18 @@
1
1
  import { Box } from 'ink';
2
2
  import React from 'react';
3
3
  import { BoardUI } from './board/components/Board.js';
4
+ import { ContextBar } from './board/components/ContextBar.js';
4
5
  import { HelpUI } from './board/components/Help.js';
6
+ import { Mode } from './navigation/model/action-map.model.js';
7
+ import { appState } from './navigation/state/state.js';
5
8
  export default function App({ board }) {
6
9
  const width = process.stdout.columns || 120;
7
- const swimlaneWidth = Math.floor(width / board.children.length);
8
- const renderedWidth = swimlaneWidth * board.children.length;
10
+ const swimlaneMaxWidth = Math.floor(process.stdout.columns / 3);
11
+ const swimlaneDynamicWidth = Math.floor(width / board.children.length);
12
+ const renderedWidth = swimlaneDynamicWidth * board.children.length;
13
+ const swimlaneWidth = Math.min(renderedWidth, swimlaneMaxWidth);
9
14
  return (React.createElement(Box, { flexDirection: "column" },
10
- React.createElement(BoardUI, { board: board, swimlaneWidth: swimlaneWidth }),
11
- React.createElement(HelpUI, { width: renderedWidth })));
15
+ !(appState.mode === Mode.HELP) && (React.createElement(BoardUI, { board: board, swimlaneWidth: swimlaneWidth })),
16
+ appState.mode === Mode.HELP && React.createElement(HelpUI, { width: renderedWidth }),
17
+ React.createElement(ContextBar, { width: width })));
12
18
  }
@@ -1,19 +1,11 @@
1
- import { Box, Text, useApp, useInput } from 'ink';
1
+ import { Box, Text } from 'ink';
2
2
  import React from 'react';
3
+ import { appState } from '../../navigation/state/state.js';
3
4
  import { BoardContentUI } from './Swimlanes.js';
4
5
  export const BoardUI = ({ board, swimlaneWidth, }) => {
5
- const { exit } = useApp();
6
- useInput((input, key) => {
7
- if (key.escape || input === 'q') {
8
- exit();
9
- }
10
- });
11
6
  return (React.createElement(Box, { flexDirection: "column" },
12
- React.createElement(Box, { padding: 1, justifyContent: "center" },
13
- React.createElement(Text, null,
14
- "--- ",
15
- board.name,
16
- " ---")),
7
+ React.createElement(Box, { paddingLeft: 1 },
8
+ React.createElement(Text, null, appState.breadCrumb.map(b => ' > ' + b.name))),
17
9
  React.createElement(Box, { flexDirection: "row" },
18
10
  React.createElement(BoardContentUI, { items: board.children, width: swimlaneWidth }))));
19
11
  };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const CommandLine: React.FC;
@@ -0,0 +1,26 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { getCommandLineInput, subscribeCommandLineState, } from '../../navigation/state/command-line.state.js';
4
+ const roleColors = {
5
+ command: 'cyan',
6
+ argument: 'white',
7
+ };
8
+ export const CommandLine = () => {
9
+ const [input, setInput] = useState(getCommandLineInput());
10
+ useEffect(() => {
11
+ const unsubscribe = subscribeCommandLineState(() => {
12
+ setInput(getCommandLineInput());
13
+ });
14
+ return () => {
15
+ unsubscribe();
16
+ };
17
+ }, []);
18
+ const [command, ...rest] = input.split(' ');
19
+ const argument = rest.join(' ');
20
+ return (React.createElement(Box, null,
21
+ React.createElement(Text, { color: "gray" }, ":"),
22
+ command && React.createElement(Text, { color: roleColors.command }, command),
23
+ argument && (React.createElement(Text, null,
24
+ ' ',
25
+ React.createElement(Text, { color: roleColors.argument }, "'" + argument + "'")))));
26
+ };
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- export declare const HelpUI: React.FC<{
2
+ export declare const ContextBar: React.FC<{
3
3
  width: number;
4
4
  }>;
@@ -0,0 +1,17 @@
1
+ import { Box, Text } from 'ink';
2
+ import React from 'react';
3
+ import { Mode } from '../../navigation/model/action-map.model.js';
4
+ import { appState } from '../../navigation/state/state.js';
5
+ import { CommandLine } from './CommandLine.js';
6
+ export const ContextBar = ({ width }) => (React.createElement(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, borderColor: "gray", borderStyle: "round", width: width },
7
+ React.createElement(Box, null, appState.mode === Mode.COMMAND_LINE ? (React.createElement(CommandLine, null)) : (React.createElement(Box, { flexDirection: "row", gap: 2 },
8
+ React.createElement(Text, null, "\uD83D\uDCA1"),
9
+ appState.availableHints.map((x, index) => {
10
+ const [command, ...rest] = x.split(' ');
11
+ const argument = rest.join(' ');
12
+ return (React.createElement(Box, { key: index },
13
+ React.createElement(Text, { color: "cyan" }, command),
14
+ argument && (React.createElement(React.Fragment, null,
15
+ React.createElement(Text, null, " "),
16
+ React.createElement(Text, { color: "gray" }, argument)))));
17
+ }))))));
@@ -1,21 +1,28 @@
1
1
  import { Box, Text } from 'ink';
2
- import { navigationState } from '../../navigation/state/state.js';
2
+ import { appState } from '../../navigation/state/state.js';
3
3
  import React from 'react';
4
- export const HelpUI = ({ width }) => (React.createElement(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, borderColor: "gray", borderStyle: "round", width: width },
5
- React.createElement(Box, null,
6
- React.createElement(Text, { color: "gray" }, "H: help")),
7
- navigationState.viewHelp
8
- ? navigationState.availableActions
4
+ import { Mode } from '../../navigation/model/action-map.model.js';
5
+ export const HelpUI = ({ width }) => (React.createElement(Box, { flexDirection: "column", marginTop: 3, borderColor: "gray", borderStyle: "round", width: width, minHeight: 19 },
6
+ React.createElement(Box, { flexDirection: "column", width: width }, appState.mode === Mode.HELP
7
+ ? [
8
+ {
9
+ action: '',
10
+ description: '[COMMAND] DESCRIPTION',
11
+ mode: appState.mode,
12
+ },
13
+ ...appState.availableActions,
14
+ ]
9
15
  .filter(action => Boolean(action.description))
10
- .filter(x => x.mode === navigationState.mode)
16
+ // .filter(x => x.mode === navigationState.mode)
11
17
  .map((action, index) => {
12
18
  const [leftRaw, rightRaw] = action.description.split(']');
13
19
  const left = leftRaw?.replace('[', '');
14
20
  const right = rightRaw?.trim(); // no extra space
15
21
  return (React.createElement(Box, { paddingLeft: 1, key: index, flexDirection: "row" },
16
- React.createElement(Box, { width: 20 },
17
- React.createElement(Text, { color: "cyan" }, left)),
18
- React.createElement(Box, { flexGrow: 1 },
19
- React.createElement(Text, { color: "white" }, right))));
22
+ React.createElement(Box, { key: index, flexDirection: "row", paddingBottom: index ? 0 : 1 },
23
+ React.createElement(Box, { flexGrow: 1, width: 30 },
24
+ React.createElement(Text, { color: index ? 'white' : 'gray' }, right)),
25
+ React.createElement(Box, { width: 20 },
26
+ React.createElement(Text, { color: index ? 'yellow' : 'gray' }, left)))));
20
27
  })
21
- : null));
28
+ : null)));
@@ -3,6 +3,7 @@ import { Swimlane } from '../model/board.model.js';
3
3
  type Props = {
4
4
  item: Swimlane;
5
5
  width: number;
6
+ isSelected: boolean;
6
7
  };
7
8
  export declare const SwimlaneUI: React.FC<Props>;
8
9
  export {};
@@ -2,9 +2,11 @@ import { Box, Text } from 'ink';
2
2
  import React from 'react';
3
3
  import { ScrollBoxUI } from './ScrollBox.js';
4
4
  import { TicketListItemUI } from './TicketListItem.js';
5
- export const SwimlaneUI = ({ item, width }) => {
6
- return (React.createElement(Box, { flexDirection: "column", width: width, borderStyle: "round", borderColor: item.isSelected ? 'cyan' : 'gray', paddingRight: 1, paddingLeft: 1, paddingBottom: 1, minHeight: 15 },
7
- React.createElement(Box, { borderStyle: "round", borderColor: 'gray', justifyContent: "center" },
5
+ export const SwimlaneUI = ({ item, isSelected, width }) => {
6
+ const color = isSelected ? 'cyan' : 'gray';
7
+ return (React.createElement(Box, { flexDirection: "column", width: width, borderStyle: "round", borderColor: 'gray', paddingRight: 1, paddingLeft: 1, minHeight: 15, height: 20 },
8
+ React.createElement(Box, { borderStyle: "round", borderColor: color, justifyContent: "center" },
8
9
  React.createElement(Text, { bold: true }, item.name)),
9
- React.createElement(ScrollBoxUI, { selectedIndex: item.children.findIndex(x => x.isSelected), width: width, size: 10, children: item.children.map((ticket, index) => (React.createElement(TicketListItemUI, { key: index, width: width, ticket: ticket }))) })));
10
+ React.createElement(Box, { padding: 1 },
11
+ React.createElement(ScrollBoxUI, { selectedIndex: item.children.findIndex(x => x.isSelected), width: width, size: 10, children: item.children.map((ticket, index) => (React.createElement(TicketListItemUI, { key: index, width: width, ticket: ticket }))) }))));
10
12
  };
@@ -1,20 +1,17 @@
1
1
  import React from 'react';
2
2
  import { Box } from 'ink';
3
- import { navigationState } from '../../navigation/state/state.js';
3
+ import { appState } from '../../navigation/state/state.js';
4
4
  import { BoardItemTypes } from '../model/board.model.js';
5
5
  import { SwimlaneUI } from './Swimlane.js';
6
6
  import { TicketUI } from './TicketUI.js';
7
7
  export const BoardContentUI = ({ items, width }) => {
8
- const actionContext = navigationState?.currentNode?.actionContext;
9
- const isSwimlaneContext = [
10
- undefined,
11
- BoardItemTypes.BOARD,
12
- BoardItemTypes.SWIMLANE,
13
- BoardItemTypes.TICKET_LIST_ITEM,
14
- ].includes(actionContext);
15
- const isTicketContext = actionContext === BoardItemTypes.TICKET;
8
+ const actionContext = appState.currentNode.actionContext;
9
+ const isTicketContext = actionContext === BoardItemTypes.TICKET_LIST_ITEM;
10
+ const isSwimlaneContext = actionContext === BoardItemTypes.BOARD ||
11
+ actionContext === BoardItemTypes.SWIMLANE;
16
12
  return (React.createElement(Box, { flexDirection: "row" },
17
13
  isSwimlaneContext &&
18
- items.map((lane, index) => (React.createElement(SwimlaneUI, { key: index, width: width, item: lane }))),
19
- isTicketContext && navigationState.currentNode && (React.createElement(TicketUI, { width: width * items.length, item: navigationState.currentNode }))));
14
+ items.map((lane, index) => (React.createElement(SwimlaneUI, { key: index, width: width, isSelected: appState.currentNode.actionContext === 'BOARD' &&
15
+ appState.selectedIndex === index, item: lane }))),
16
+ isTicketContext && appState.currentNode && (React.createElement(TicketUI, { width: width * items.length, item: appState.breadCrumb[appState.breadCrumb.length - 1] }))));
20
17
  };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const TextInput: React.FC<{
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onSubmit: (value: string) => void;
6
+ }>;
@@ -0,0 +1,9 @@
1
+ import { Text } from 'ink';
2
+ import React from 'react';
3
+ // const onChange = (_value: string) => {
4
+ // // No-op for now
5
+ // };
6
+ // const onSubmit = (_value: string) => {
7
+ // // No-op for now
8
+ // };
9
+ export const TextInput = ({ value }) => React.createElement(Text, null, value);
@@ -1,12 +1,13 @@
1
1
  import { Box, Text } from 'ink';
2
2
  import React from 'react';
3
- import { navigationState } from '../../navigation/state/state.js';
3
+ import { Mode } from '../../navigation/model/action-map.model.js';
4
+ import { appState } from '../../navigation/state/state.js';
4
5
  const truncateWithEllipsis = (str, width) => str.length >= width ? str.slice(0, width - 3) + '...' : str;
5
6
  export const TicketListItemUI = ({ width, ticket }) => (React.createElement(Box, { borderBottom: true },
6
- React.createElement(Text, { color: ticket.isSelected && navigationState.mode === 'move'
7
- ? 'white'
7
+ React.createElement(Text, { color: ticket.isSelected && appState.mode === Mode.MOVE
8
+ ? 'cyan'
8
9
  : ticket.isSelected
9
10
  ? 'cyan'
10
- : navigationState.mode === 'move'
11
+ : appState.mode === Mode.MOVE
11
12
  ? 'gray'
12
- : 'white' }, truncateWithEllipsis(ticket.id + ' - ' + ticket.name, width - 6))));
13
+ : 'white' }, truncateWithEllipsis(ticket.name, width - 6))));
@@ -1,9 +1,8 @@
1
1
  import { Box, Text } from 'ink';
2
2
  import React from 'react';
3
- export const TicketUI = ({ item, width }) => {
4
- return (React.createElement(Box, { flexDirection: "row", padding: 1, paddingLeft: 2, borderStyle: 'round', width: width, minHeight: 16, borderColor: 'gray' },
5
- React.createElement(Box, { flexDirection: "row" },
6
- React.createElement(Box, { width: 20 },
7
- React.createElement(Text, { color: 'cyan' }, 'Description: ')),
8
- React.createElement(Text, null, item.name))));
9
- };
3
+ export const TicketUI = ({ item, width }) => (React.createElement(Box, { flexDirection: "column", padding: 1, paddingLeft: 2, borderStyle: "round", width: width, minHeight: 20, borderColor: "gray" }, item.children.map(child => (React.createElement(Box, { key: child.id, flexDirection: "row", borderStyle: 'round', borderColor: child.isSelected ? 'cyan' : 'gray', paddingLeft: 1 },
4
+ React.createElement(Box, { width: 30 },
5
+ React.createElement(Text, { color: "cyan" },
6
+ child.name,
7
+ ":")),
8
+ React.createElement(Text, null, child.description))))));
@@ -0,0 +1,7 @@
1
+ export declare const Hints: {
2
+ readonly [x: string]: readonly [] | readonly [":h Help", "hjkl: navigate", "enter: confirm"] | readonly ["q: exit"] | readonly ["i: edit", "y: yank/move"] | readonly ["q: exit", "i: edit"] | readonly ["hjkl: move selection", "e/enter: confirm move/yank", "q: exit"] | readonly ["hjkl: move selection", "e/enter: confirm move/yank", "y: confirm move/yank", "q: exit"];
3
+ readonly BOARD: readonly [];
4
+ readonly SWIMLANE: readonly [":h Help", "hjkl: navigate", "enter: confirm"];
5
+ readonly TICKET_LIST_ITEM: readonly ["i: edit", "y: yank/move"];
6
+ readonly TICKET: readonly ["q: exit", "i: edit"];
7
+ };
@@ -0,0 +1,21 @@
1
+ import { Mode } from '../../navigation/model/action-map.model.js';
2
+ import { BoardItemTypes } from '../model/board.model.js';
3
+ export const Hints = {
4
+ [BoardItemTypes.BOARD]: [],
5
+ [BoardItemTypes.SWIMLANE]: [':h Help', 'hjkl: navigate', 'enter: confirm'],
6
+ [BoardItemTypes.TICKET_LIST_ITEM + Mode.HELP]: ['q: exit'],
7
+ [BoardItemTypes.SWIMLANE + Mode.HELP]: ['q: exit'],
8
+ [BoardItemTypes.TICKET_LIST_ITEM]: ['i: edit', 'y: yank/move'],
9
+ [BoardItemTypes.TICKET]: ['q: exit', 'i: edit'],
10
+ [BoardItemTypes.SWIMLANE + Mode.MOVE]: [
11
+ 'hjkl: move selection',
12
+ 'e/enter: confirm move/yank',
13
+ 'q: exit',
14
+ ],
15
+ [BoardItemTypes.TICKET_LIST_ITEM + Mode.MOVE]: [
16
+ 'hjkl: move selection',
17
+ 'e/enter: confirm move/yank',
18
+ 'y: confirm move/yank',
19
+ 'q: exit',
20
+ ],
21
+ };
@@ -1,10 +1,22 @@
1
1
  import { BoardItemTypes } from '../model/board.model.js';
2
+ // import {Board, BoardItemTypes} from '../model/board.model.js';
2
3
  export const board = {
3
4
  id: 'b1',
4
5
  isSelected: false,
5
- name: 'Product Development Board',
6
- actionContext: 'BOARD',
6
+ name: 'Board',
7
+ actionContext: BoardItemTypes.BOARD,
7
8
  childrenRenderAxis: 'horizontal',
9
+ // children: [
10
+ // {
11
+ // isSelected: false,
12
+ // id: 's1',
13
+ // name: 'To Do',
14
+ // childrenRenderAxis: 'vertical',
15
+ // actionContext: BoardItemTypes.SWIMLANE,
16
+ // enableChildNavigationAcrossContainers: true,
17
+ // children: [],
18
+ // },
19
+ // ],
8
20
  children: [
9
21
  {
10
22
  isSelected: false,
@@ -24,7 +36,17 @@ export const board = {
24
36
  {
25
37
  isSelected: false,
26
38
  id: 't1-desc',
27
- name: 'Configure GitHub Actions for test, build, and deploy stages.',
39
+ name: 'Description',
40
+ description: 'Configure GitHub Actions for test, build, and deploy stages.',
41
+ actionContext: BoardItemTypes.TICKET,
42
+ childrenRenderAxis: 'vertical',
43
+ children: [],
44
+ },
45
+ {
46
+ isSelected: false,
47
+ id: 't1-desc',
48
+ name: 'Tag',
49
+ description: 'Urgent',
28
50
  actionContext: BoardItemTypes.TICKET,
29
51
  childrenRenderAxis: 'vertical',
30
52
  children: [],
@@ -41,7 +63,8 @@ export const board = {
41
63
  {
42
64
  isSelected: false,
43
65
  id: 't2-desc',
44
- name: 'Define request/response formats, error handling, and versioning.',
66
+ name: 'Description',
67
+ description: 'Define request/response formats, error handling, and versioning.',
45
68
  actionContext: BoardItemTypes.TICKET,
46
69
  childrenRenderAxis: 'vertical',
47
70
  children: [],
@@ -58,7 +81,8 @@ export const board = {
58
81
  {
59
82
  isSelected: false,
60
83
  id: 't3-desc',
61
- name: 'Collaborate with leads to define team goals and key results.',
84
+ name: 'Description',
85
+ description: 'Collaborate with leads to define team goals and key results.',
62
86
  actionContext: BoardItemTypes.TICKET,
63
87
  childrenRenderAxis: 'vertical',
64
88
  children: [],
@@ -75,7 +99,8 @@ export const board = {
75
99
  {
76
100
  isSelected: false,
77
101
  id: 't11-desc',
78
- name: 'Create high-level overview of services, databases, and communication flows.',
102
+ name: 'Description',
103
+ description: 'Create high-level overview of services, databases, and communication flows.',
79
104
  actionContext: BoardItemTypes.TICKET,
80
105
  childrenRenderAxis: 'vertical',
81
106
  children: [],
@@ -92,7 +117,8 @@ export const board = {
92
117
  {
93
118
  isSelected: false,
94
119
  id: 't12-desc',
95
- name: 'Integrate tools like Prometheus and Grafana; define alert thresholds.',
120
+ name: 'Description',
121
+ description: 'Integrate tools like Prometheus and Grafana; define alert thresholds.',
96
122
  actionContext: BoardItemTypes.TICKET,
97
123
  childrenRenderAxis: 'vertical',
98
124
  children: [],
@@ -109,7 +135,8 @@ export const board = {
109
135
  {
110
136
  isSelected: false,
111
137
  id: 't13-desc',
112
- name: 'Identify GDPR and CCPA implications for data handling and user consent.',
138
+ name: 'Description',
139
+ description: 'Identify GDPR and CCPA implications for data handling and user consent.',
113
140
  actionContext: BoardItemTypes.TICKET,
114
141
  childrenRenderAxis: 'vertical',
115
142
  children: [],
@@ -126,7 +153,8 @@ export const board = {
126
153
  {
127
154
  isSelected: false,
128
155
  id: 't14-desc',
129
- name: 'Write setup instructions, repo structure, and coding standards.',
156
+ name: 'Description',
157
+ description: 'Write setup instructions, repo structure, and coding standards.',
130
158
  actionContext: BoardItemTypes.TICKET,
131
159
  childrenRenderAxis: 'vertical',
132
160
  children: [],
@@ -143,7 +171,8 @@ export const board = {
143
171
  {
144
172
  isSelected: false,
145
173
  id: 't15-desc',
146
- name: 'Compare Redux Toolkit, Zustand, and Jotai for frontend scalability.',
174
+ name: 'Description',
175
+ description: 'Compare Redux Toolkit, Zustand, and Jotai for frontend scalability.',
147
176
  actionContext: BoardItemTypes.TICKET,
148
177
  childrenRenderAxis: 'vertical',
149
178
  children: [],
@@ -160,7 +189,8 @@ export const board = {
160
189
  {
161
190
  isSelected: false,
162
191
  id: 't16-desc',
163
- name: 'Define test scenarios covering API and UI flows.',
192
+ name: 'Description',
193
+ description: 'Define test scenarios covering API and UI flows.',
164
194
  actionContext: BoardItemTypes.TICKET,
165
195
  childrenRenderAxis: 'vertical',
166
196
  children: [],
@@ -177,7 +207,8 @@ export const board = {
177
207
  {
178
208
  isSelected: false,
179
209
  id: 't17-desc',
180
- name: 'Set baseline response times for key endpoints and UI interactions.',
210
+ name: 'Description',
211
+ description: 'Set baseline response times for key endpoints and UI interactions.',
181
212
  actionContext: BoardItemTypes.TICKET,
182
213
  childrenRenderAxis: 'vertical',
183
214
  children: [],
@@ -194,7 +225,8 @@ export const board = {
194
225
  {
195
226
  isSelected: false,
196
227
  id: 't18-desc',
197
- name: 'Standardize client and server error formats and fallback UIs.',
228
+ name: 'Description',
229
+ description: 'Standardize client and server error formats and fallback UIs.',
198
230
  actionContext: BoardItemTypes.TICKET,
199
231
  childrenRenderAxis: 'vertical',
200
232
  children: [],
@@ -211,7 +243,8 @@ export const board = {
211
243
  {
212
244
  isSelected: false,
213
245
  id: 't19-desc',
214
- name: 'Choose log levels, format, and storage mechanisms for observability.',
246
+ name: 'Description',
247
+ description: 'Choose log levels, format, and storage mechanisms for observability.',
215
248
  actionContext: BoardItemTypes.TICKET,
216
249
  childrenRenderAxis: 'vertical',
217
250
  children: [],
@@ -228,7 +261,8 @@ export const board = {
228
261
  {
229
262
  isSelected: false,
230
263
  id: 't20-desc',
231
- name: 'Enable gradual rollouts using LaunchDarkly or Unleash.',
264
+ name: 'Description',
265
+ description: 'Enable gradual rollouts using LaunchDarkly or Unleash.',
232
266
  actionContext: BoardItemTypes.TICKET,
233
267
  childrenRenderAxis: 'vertical',
234
268
  children: [],
@@ -245,7 +279,8 @@ export const board = {
245
279
  {
246
280
  isSelected: false,
247
281
  id: 't21-desc',
248
- name: 'List comparable products and key differentiators for positioning.',
282
+ name: 'Description',
283
+ description: 'List comparable products and key differentiators for positioning.',
249
284
  actionContext: BoardItemTypes.TICKET,
250
285
  childrenRenderAxis: 'vertical',
251
286
  children: [],
@@ -262,7 +297,8 @@ export const board = {
262
297
  {
263
298
  isSelected: false,
264
299
  id: 't22-desc',
265
- name: 'Schedule initial sync with stakeholders and present roadmap.',
300
+ name: 'Description',
301
+ description: 'Schedule initial sync with stakeholders and present roadmap.',
266
302
  actionContext: BoardItemTypes.TICKET,
267
303
  childrenRenderAxis: 'vertical',
268
304
  children: [],
@@ -279,7 +315,8 @@ export const board = {
279
315
  {
280
316
  isSelected: false,
281
317
  id: 't23-desc',
282
- name: 'Set up base AWS resources using Terraform templates.',
318
+ name: 'Description',
319
+ description: 'Set up base AWS resources using Terraform templates.',
283
320
  actionContext: BoardItemTypes.TICKET,
284
321
  childrenRenderAxis: 'vertical',
285
322
  children: [],
@@ -296,7 +333,8 @@ export const board = {
296
333
  {
297
334
  isSelected: false,
298
335
  id: 't24-desc',
299
- name: 'Collaborate with design to outline primary users and their needs.',
336
+ name: 'Description',
337
+ description: 'Collaborate with design to outline primary users and their needs.',
300
338
  actionContext: BoardItemTypes.TICKET,
301
339
  childrenRenderAxis: 'vertical',
302
340
  children: [],
@@ -313,7 +351,8 @@ export const board = {
313
351
  {
314
352
  isSelected: false,
315
353
  id: 't25-desc',
316
- name: 'Decide on tools, frequency, and feedback channels for retrospectives.',
354
+ name: 'Description',
355
+ description: 'Decide on tools, frequency, and feedback channels for retrospectives.',
317
356
  actionContext: BoardItemTypes.TICKET,
318
357
  childrenRenderAxis: 'vertical',
319
358
  children: [],
@@ -349,7 +388,8 @@ export const board = {
349
388
  {
350
389
  isSelected: false,
351
390
  id: 't4-desc',
352
- name: 'Integrate frontend with backend auth API and handle edge cases.',
391
+ name: 'Description',
392
+ description: 'Integrate frontend with backend auth API and handle edge cases.',
353
393
  actionContext: BoardItemTypes.TICKET,
354
394
  childrenRenderAxis: 'vertical',
355
395
  children: [],
@@ -366,7 +406,8 @@ export const board = {
366
406
  {
367
407
  isSelected: false,
368
408
  id: 't5-desc',
369
- name: 'Collaborate with UX to create a grid-based responsive dashboard.',
409
+ name: 'Description',
410
+ description: 'Collaborate with UX to create a grid-based responsive dashboard.',
370
411
  actionContext: BoardItemTypes.TICKET,
371
412
  childrenRenderAxis: 'vertical',
372
413
  children: [],
@@ -383,7 +424,8 @@ export const board = {
383
424
  {
384
425
  isSelected: false,
385
426
  id: 't6-desc',
386
- name: 'Evaluate color contrast, ARIA usage, and keyboard nav.',
427
+ name: 'Description',
428
+ description: 'Evaluate color contrast, ARIA usage, and keyboard nav.',
387
429
  actionContext: BoardItemTypes.TICKET,
388
430
  childrenRenderAxis: 'vertical',
389
431
  children: [],
@@ -400,7 +442,8 @@ export const board = {
400
442
  {
401
443
  isSelected: false,
402
444
  id: 't7-desc',
403
- name: 'Ensure test coverage, types, and data validation are in place.',
445
+ name: 'Description',
446
+ description: 'Ensure test coverage, types, and data validation are in place.',
404
447
  actionContext: BoardItemTypes.TICKET,
405
448
  childrenRenderAxis: 'vertical',
406
449
  children: [],
@@ -417,7 +460,8 @@ export const board = {
417
460
  {
418
461
  isSelected: false,
419
462
  id: 't8-desc',
420
- name: 'Verify spacing, responsiveness, and visual hierarchy.',
463
+ name: 'Description',
464
+ description: 'Verify spacing, responsiveness, and visual hierarchy.',
421
465
  actionContext: BoardItemTypes.TICKET,
422
466
  childrenRenderAxis: 'vertical',
423
467
  children: [],
@@ -444,7 +488,8 @@ export const board = {
444
488
  {
445
489
  isSelected: false,
446
490
  id: 't9-desc',
447
- name: 'Document reusable components and tokens in Storybook.',
491
+ name: 'Description',
492
+ description: 'Document reusable components and tokens in Storybook.',
448
493
  actionContext: BoardItemTypes.TICKET,
449
494
  childrenRenderAxis: 'vertical',
450
495
  children: [],
@@ -461,7 +506,8 @@ export const board = {
461
506
  {
462
507
  isSelected: false,
463
508
  id: 't10-desc',
464
- name: 'All pipelines green. Ready for product team QA.',
509
+ name: 'Description',
510
+ description: 'All pipelines green. Ready for product team QA.',
465
511
  actionContext: BoardItemTypes.TICKET,
466
512
  childrenRenderAxis: 'vertical',
467
513
  children: [],
package/dist/cli.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export declare const main: () => void;
2
+ import './debug-logger.js';
3
+ export declare let renderBoard: () => void;