@knpkv/codecommit 0.2.0 → 0.3.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 (59) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/tui/Constants.d.ts +0 -7
  3. package/dist/src/tui/Constants.d.ts.map +1 -1
  4. package/dist/src/tui/Constants.js +5 -31
  5. package/dist/src/tui/Constants.js.map +1 -1
  6. package/dist/src/tui/atoms/ui.d.ts +17 -1
  7. package/dist/src/tui/atoms/ui.d.ts.map +1 -1
  8. package/dist/src/tui/atoms/ui.js +12 -1
  9. package/dist/src/tui/atoms/ui.js.map +1 -1
  10. package/dist/src/tui/components/MainList.js +2 -2
  11. package/dist/src/tui/components/MainList.js.map +1 -1
  12. package/dist/src/tui/components/SettingsAboutTab.d.ts +2 -0
  13. package/dist/src/tui/components/SettingsAboutTab.d.ts.map +1 -0
  14. package/dist/src/tui/components/SettingsAboutTab.js +7 -0
  15. package/dist/src/tui/components/SettingsAboutTab.js.map +1 -0
  16. package/dist/src/tui/components/SettingsAccountsTab.d.ts +8 -0
  17. package/dist/src/tui/components/SettingsAccountsTab.d.ts.map +1 -0
  18. package/dist/src/tui/components/{SettingsTable.js → SettingsAccountsTab.js} +4 -14
  19. package/dist/src/tui/components/SettingsAccountsTab.js.map +1 -0
  20. package/dist/src/tui/components/SettingsConfigTab.d.ts +2 -0
  21. package/dist/src/tui/components/SettingsConfigTab.d.ts.map +1 -0
  22. package/dist/src/tui/components/SettingsConfigTab.js +10 -0
  23. package/dist/src/tui/components/SettingsConfigTab.js.map +1 -0
  24. package/dist/src/tui/components/SettingsThemeTab.d.ts +2 -0
  25. package/dist/src/tui/components/SettingsThemeTab.d.ts.map +1 -0
  26. package/dist/src/tui/components/SettingsThemeTab.js +24 -0
  27. package/dist/src/tui/components/SettingsThemeTab.js.map +1 -0
  28. package/dist/src/tui/components/SettingsView.d.ts +8 -0
  29. package/dist/src/tui/components/SettingsView.d.ts.map +1 -0
  30. package/dist/src/tui/components/SettingsView.js +33 -0
  31. package/dist/src/tui/components/SettingsView.js.map +1 -0
  32. package/dist/src/tui/components/index.d.ts +1 -1
  33. package/dist/src/tui/components/index.d.ts.map +1 -1
  34. package/dist/src/tui/components/index.js +1 -1
  35. package/dist/src/tui/components/index.js.map +1 -1
  36. package/dist/src/tui/hooks/useKeyboardNav.d.ts +0 -1
  37. package/dist/src/tui/hooks/useKeyboardNav.d.ts.map +1 -1
  38. package/dist/src/tui/hooks/useKeyboardNav.js +110 -76
  39. package/dist/src/tui/hooks/useKeyboardNav.js.map +1 -1
  40. package/dist/src/tui/ui/DialogCommand.d.ts.map +1 -1
  41. package/dist/src/tui/ui/DialogCommand.js +47 -25
  42. package/dist/src/tui/ui/DialogCommand.js.map +1 -1
  43. package/dist/src/tui/ui/index.d.ts +0 -2
  44. package/dist/src/tui/ui/index.d.ts.map +1 -1
  45. package/dist/src/tui/ui/index.js +0 -2
  46. package/dist/src/tui/ui/index.js.map +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +3 -3
  49. package/dist/src/tui/components/SettingsTable.d.ts +0 -12
  50. package/dist/src/tui/components/SettingsTable.d.ts.map +0 -1
  51. package/dist/src/tui/components/SettingsTable.js.map +0 -1
  52. package/dist/src/tui/ui/DialogHelp.d.ts +0 -6
  53. package/dist/src/tui/ui/DialogHelp.d.ts.map +0 -1
  54. package/dist/src/tui/ui/DialogHelp.js +0 -93
  55. package/dist/src/tui/ui/DialogHelp.js.map +0 -1
  56. package/dist/src/tui/ui/DialogTheme.d.ts +0 -2
  57. package/dist/src/tui/ui/DialogTheme.d.ts.map +0 -1
  58. package/dist/src/tui/ui/DialogTheme.js +0 -124
  59. package/dist/src/tui/ui/DialogTheme.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knpkv/codecommit",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "TUI for browsing AWS CodeCommit PRs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "open": "^10.1.0",
27
27
  "react": "^19.1.0",
28
28
  "tslib": "^2.8.1",
29
- "@knpkv/codecommit-core": "^0.2.0",
30
- "@knpkv/codecommit-web": "^0.2.0"
29
+ "@knpkv/codecommit-core": "^0.3.0",
30
+ "@knpkv/codecommit-web": "^0.3.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@effect/vitest": "latest",
@@ -1,12 +0,0 @@
1
- import type { ListItem } from "../ListBuilder.js";
2
- interface SettingsTableProps {
3
- readonly items: ReadonlyArray<ListItem>;
4
- readonly selectedIndex: number;
5
- }
6
- /**
7
- * Table for settings view
8
- * @category components
9
- */
10
- export declare function SettingsTable({ items, selectedIndex }: SettingsTableProps): import("react").ReactNode;
11
- export {};
12
- //# sourceMappingURL=SettingsTable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsTable.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/SettingsTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAIjD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,kBAAkB,6BA4GzE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SettingsTable.js","sourceRoot":"","sources":["../../../../src/tui/components/SettingsTable.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Help modal showing keyboard shortcuts for current view
3
- * @category ui
4
- */
5
- export declare function DialogHelp(): import("react").ReactNode;
6
- //# sourceMappingURL=DialogHelp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogHelp.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/DialogHelp.tsx"],"names":[],"mappings":"AAsDA;;;GAGG;AACH,wBAAgB,UAAU,8BAsEzB"}
@@ -1,93 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useAtomValue } from "@effect-atom/atom-react";
3
- import { useKeyboard } from "@opentui/react";
4
- import { useMemo, useRef } from "react";
5
- import { viewAtom } from "../atoms/ui.js";
6
- import { useDialog } from "../context/dialog.js";
7
- import { useTheme } from "../context/theme.js";
8
- const HELP_ITEMS = {
9
- prs: [
10
- { key: "f", description: "Filter PRs" },
11
- { key: "1", description: "All PRs" },
12
- { key: "2", description: "My PRs" },
13
- { key: "3", description: "By Account" },
14
- { key: "4", description: "By Author" },
15
- { key: "5", description: "By Scope" },
16
- { key: "6", description: "By Age" },
17
- { key: "←→", description: "Cycle filter values" },
18
- { key: "Enter", description: "PR Details" },
19
- { key: "o", description: "Open PR in browser" },
20
- { key: "s", description: "Manage Accounts" },
21
- { key: "n", description: "Notifications" }
22
- ],
23
- settings: [
24
- { key: "Enter", description: "Toggle account sync" },
25
- { key: "s", description: "Back to PRs" },
26
- { key: "n", description: "Notifications" }
27
- ],
28
- notifications: [
29
- { key: "Enter", description: "Run action" },
30
- { key: "c", description: "Clear all" },
31
- { key: "s", description: "Manage Accounts" },
32
- { key: "n", description: "Back to PRs" }
33
- ],
34
- details: [
35
- { key: "Esc", description: "Back to list" },
36
- { key: "Enter", description: "Open in browser" }
37
- ]
38
- };
39
- const COMMON_ITEMS = [
40
- { key: ":", description: "Command palette" },
41
- { key: "r", description: "Refresh" },
42
- { key: "t", description: "Theme" },
43
- { key: "h", description: "Help" },
44
- { key: "Esc", description: "Close / Clear" },
45
- { key: "q", description: "Quit" }
46
- ];
47
- /**
48
- * Help modal showing keyboard shortcuts for current view
49
- * @category ui
50
- */
51
- export function DialogHelp() {
52
- const { theme } = useTheme();
53
- const dialog = useDialog();
54
- const view = useAtomValue(viewAtom);
55
- const scrollRef = useRef(null);
56
- const items = useMemo(() => {
57
- const viewItems = HELP_ITEMS[view] || [];
58
- return [...viewItems, { key: "─", description: "───────────────" }, ...COMMON_ITEMS];
59
- }, [view]);
60
- useKeyboard((key) => {
61
- if (key.name === "escape" || key.name === "h" || key.name === "return") {
62
- dialog.hide();
63
- }
64
- });
65
- return (_jsxs("box", { style: {
66
- position: "absolute",
67
- top: 2,
68
- left: "20%",
69
- width: "60%",
70
- height: Math.min(items.length + 2, 18),
71
- backgroundColor: theme.backgroundElement,
72
- borderStyle: "rounded",
73
- borderColor: theme.primary,
74
- flexDirection: "column"
75
- }, children: [_jsx("box", { style: {
76
- height: 1,
77
- width: "100%",
78
- paddingLeft: 1,
79
- paddingRight: 1,
80
- flexDirection: "row",
81
- backgroundColor: theme.backgroundHeader
82
- }, children: _jsx("text", { fg: theme.primary, children: "KEYBOARD SHORTCUTS" }) }), _jsx("scrollbox", { ref: scrollRef, style: {
83
- flexGrow: 1,
84
- width: "100%"
85
- }, children: items.map((item, i) => (_jsxs("box", { style: {
86
- height: 1,
87
- width: "100%",
88
- paddingLeft: 1,
89
- paddingRight: 1,
90
- flexDirection: "row"
91
- }, children: [_jsx("box", { style: { width: 8 }, children: _jsx("text", { fg: item.key === "─" ? theme.textMuted : theme.primary, children: item.key }) }), _jsx("text", { fg: theme.text, children: item.description })] }, i))) })] }));
92
- }
93
- //# sourceMappingURL=DialogHelp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogHelp.js","sourceRoot":"","sources":["../../../../src/tui/ui/DialogHelp.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function DialogTheme(): import("react").ReactNode;
2
- //# sourceMappingURL=DialogTheme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogTheme.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/DialogTheme.tsx"],"names":[],"mappings":"AASA,wBAAgB,WAAW,8BAqJ1B"}
@@ -1,124 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useAtomSet, useAtomValue } from "@effect-atom/atom-react";
3
- import { useKeyboard } from "@opentui/react";
4
- import { useEffect, useMemo, useRef, useState } from "react";
5
- import { themeAtom } from "../atoms/ui.js";
6
- import { useDialog } from "../context/dialog.js";
7
- import { useTheme } from "../context/theme.js";
8
- import { themes } from "../theme/themes.js";
9
- export function DialogTheme() {
10
- const currentThemeId = useAtomValue(themeAtom);
11
- const [originalThemeId] = useState(currentThemeId);
12
- const { theme } = useTheme();
13
- const setTheme = useAtomSet(themeAtom);
14
- const dialog = useDialog();
15
- const [search, setSearch] = useState("");
16
- const [selectedIndex, setSelectedIndex] = useState(0);
17
- const [scrollOffset, setScrollOffset] = useState(0);
18
- const scrollRef = useRef(null);
19
- const visibleHeight = 11; // 15 max height - 3 for border/header - 1 for padding
20
- const allThemes = useMemo(() => Object.keys(themes)
21
- .sort()
22
- .map((name) => ({ id: name, label: name })), []);
23
- const filteredThemes = useMemo(() => {
24
- if (!search)
25
- return allThemes;
26
- const s = search.toLowerCase();
27
- return allThemes.filter((t) => t.label.toLowerCase().includes(s));
28
- }, [allThemes, search]);
29
- // Set initial selection to current theme
30
- useEffect(() => {
31
- if (!search) {
32
- const idx = filteredThemes.findIndex((t) => t.id === currentThemeId);
33
- if (idx >= 0) {
34
- setSelectedIndex(idx);
35
- // Set initial scroll to show item with margin
36
- const initialOffset = Math.max(0, idx - 1);
37
- setScrollOffset(initialOffset);
38
- if (scrollRef.current) {
39
- scrollRef.current.scrollTo({ x: 0, y: initialOffset });
40
- }
41
- }
42
- }
43
- }, []);
44
- // Scroll to keep selected item visible with 1-item margin
45
- useEffect(() => {
46
- if (!scrollRef.current)
47
- return;
48
- let newOffset = scrollOffset;
49
- if (selectedIndex < scrollOffset + 1) {
50
- newOffset = Math.max(0, selectedIndex - 1);
51
- }
52
- else if (selectedIndex > scrollOffset + visibleHeight - 2) {
53
- newOffset = selectedIndex - visibleHeight + 2;
54
- }
55
- if (newOffset !== scrollOffset) {
56
- setScrollOffset(newOffset);
57
- scrollRef.current.scrollTo({ x: 0, y: newOffset });
58
- }
59
- }, [selectedIndex, scrollOffset, visibleHeight]);
60
- // Live preview
61
- useEffect(() => {
62
- const selected = filteredThemes[selectedIndex];
63
- if (selected) {
64
- setTheme(selected.id);
65
- }
66
- }, [selectedIndex, filteredThemes, setTheme]);
67
- useKeyboard((key) => {
68
- if (key.name === "escape") {
69
- setTheme(originalThemeId);
70
- dialog.hide();
71
- }
72
- else if (key.name === "return") {
73
- dialog.hide();
74
- }
75
- else if (key.name === "down") {
76
- setSelectedIndex((i) => Math.min(i + 1, filteredThemes.length - 1));
77
- }
78
- else if (key.name === "up") {
79
- setSelectedIndex((i) => Math.max(i - 1, 0));
80
- }
81
- else if (key.name === "backspace") {
82
- setSearch((s) => s.slice(0, -1));
83
- setSelectedIndex(0);
84
- setScrollOffset(0);
85
- }
86
- else {
87
- const char = key.char || (key.name?.length === 1 ? key.name : null);
88
- if (char && char.length === 1) {
89
- setSearch((s) => s + char);
90
- setSelectedIndex(0);
91
- setScrollOffset(0);
92
- }
93
- }
94
- });
95
- return (_jsxs("box", { style: {
96
- position: "absolute",
97
- top: 2,
98
- left: "20%",
99
- width: "60%",
100
- height: Math.min(filteredThemes.length + 3, 15),
101
- backgroundColor: theme.backgroundElement,
102
- borderStyle: "rounded",
103
- borderColor: theme.primary,
104
- flexDirection: "column"
105
- }, children: [_jsxs("box", { style: {
106
- height: 1,
107
- width: "100%",
108
- paddingLeft: 1,
109
- paddingRight: 1,
110
- flexDirection: "row",
111
- backgroundColor: theme.backgroundHeader
112
- }, children: [_jsx("text", { fg: theme.text, children: `> ${search}` }), _jsx("text", { fg: theme.primary, children: "│" })] }), _jsxs("scrollbox", { ref: scrollRef, style: {
113
- flexGrow: 1,
114
- width: "100%"
115
- }, children: [filteredThemes.map((t, i) => (_jsx("box", { style: {
116
- height: 1,
117
- width: "100%",
118
- paddingLeft: 1,
119
- paddingRight: 1,
120
- flexDirection: "row",
121
- ...(i === selectedIndex && { backgroundColor: theme.primary })
122
- }, children: _jsx("text", { fg: i === selectedIndex ? theme.selectedText : theme.text, children: t.id === currentThemeId ? `${t.label} (current)` : t.label }) }, t.id))), filteredThemes.length === 0 && (_jsx("box", { style: { height: 1, paddingLeft: 1 }, children: _jsx("text", { fg: theme.textMuted, children: "No themes found" }) }))] })] }));
123
- }
124
- //# sourceMappingURL=DialogTheme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogTheme.js","sourceRoot":"","sources":["../../../../src/tui/ui/DialogTheme.tsx"],"names":[],"mappings":"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"}