@ameshkin/ticket-mate 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ameshkin/ticket-mate",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "private": false,
5
5
  "description": "Jira integration and AI execution layer - bridges Jira tickets and AI-assisted development workflows (backend package)",
6
6
  "keywords": [
Binary file
@@ -1,2 +0,0 @@
1
- export default function CommandPalette(): import("react/jsx-runtime").JSX.Element | null;
2
- //# sourceMappingURL=CommandPalette.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/keyboard/CommandPalette.tsx"],"names":[],"mappings":"AAyBA,MAAM,CAAC,OAAO,UAAU,cAAc,mDAkLrC"}
@@ -1,123 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useMemo } from "react";
4
- import { Dialog, DialogContent, TextField, List, ListItem, ListItemButton, ListItemText, ListItemIcon, Typography, Box, InputAdornment, Chip, useTheme, alpha, } from "@mui/material";
5
- import SearchIcon from "@mui/icons-material/Search";
6
- import KeyboardCommandKeyIcon from "@mui/icons-material/KeyboardCommandKey";
7
- import { useShortcutContext } from "@/lib/keyboard/ShortcutContext";
8
- import { useShortcut } from "@/lib/keyboard/useShortcut";
9
- import { useRouter } from "next/navigation";
10
- export default function CommandPalette() {
11
- const [open, setOpen] = useState(false);
12
- const [query, setQuery] = useState("");
13
- const [selectedIndex, setSelectedIndex] = useState(0);
14
- const { shortcuts } = useShortcutContext();
15
- const router = useRouter();
16
- const theme = useTheme();
17
- // Toggle Palette
18
- useShortcut(["meta+k", "ctrl+k"], () => setOpen((prev) => !prev), {
19
- description: "Toggle Command Palette",
20
- scope: "global",
21
- category: "Global",
22
- });
23
- // Reset state when closed - moved to handleClose to avoid useEffect lint error
24
- const handleClose = () => {
25
- setOpen(false);
26
- // Small timeout to allow transition to start before clearing content
27
- setTimeout(() => {
28
- setQuery("");
29
- setSelectedIndex(0);
30
- }, 150);
31
- };
32
- // Filter shortcuts
33
- const filteredShortcuts = useMemo(() => {
34
- if (!query)
35
- return shortcuts;
36
- const lowerQuery = query.toLowerCase();
37
- return shortcuts.filter((s) => s.description.toLowerCase().includes(lowerQuery) ||
38
- s.category?.toLowerCase().includes(lowerQuery) ||
39
- s.id.toLowerCase().includes(lowerQuery));
40
- }, [shortcuts, query]);
41
- // Handle Navigation
42
- const handleKeyDown = (e) => {
43
- if (e.key === "ArrowDown") {
44
- e.preventDefault();
45
- setSelectedIndex((prev) => (prev + 1) % filteredShortcuts.length);
46
- }
47
- else if (e.key === "ArrowUp") {
48
- e.preventDefault();
49
- setSelectedIndex((prev) => (prev - 1 + filteredShortcuts.length) % filteredShortcuts.length);
50
- }
51
- else if (e.key === "Enter") {
52
- e.preventDefault();
53
- const selected = filteredShortcuts[selectedIndex];
54
- if (selected) {
55
- selected.action();
56
- handleClose();
57
- }
58
- }
59
- };
60
- if (!open)
61
- return null;
62
- return (_jsxs(Dialog, { open: open, onClose: handleClose, maxWidth: "sm", fullWidth: true, PaperProps: {
63
- sx: {
64
- borderRadius: 3,
65
- bgcolor: alpha(theme.palette.background.paper, 0.95),
66
- backdropFilter: "blur(10px)",
67
- backgroundImage: "none",
68
- boxShadow: theme.shadows[24],
69
- overflow: "hidden",
70
- },
71
- }, transitionDuration: 100, children: [_jsx(Box, { sx: { p: 2, borderBottom: `1px solid ${theme.palette.divider}` }, children: _jsx(TextField, { autoFocus: true, fullWidth: true, placeholder: "Type a command or search...", value: query, onChange: (e) => {
72
- setQuery(e.target.value);
73
- setSelectedIndex(0);
74
- }, onKeyDown: handleKeyDown, InputProps: {
75
- startAdornment: (_jsx(InputAdornment, { position: "start", children: _jsx(SearchIcon, { color: "action" }) })),
76
- disableUnderline: true,
77
- sx: { fontSize: "1.2rem" },
78
- }, variant: "standard" }) }), _jsx(DialogContent, { sx: { p: 0, maxHeight: 400, minHeight: 100 }, children: filteredShortcuts.length === 0 ? (_jsx(Box, { sx: { p: 4, textAlign: "center", color: "text.secondary" }, children: _jsx(Typography, { children: "No commands found." }) })) : (_jsx(List, { sx: { py: 0 }, children: filteredShortcuts.map((shortcut, index) => (_jsx(ListItem, { disablePadding: true, children: _jsxs(ListItemButton, { selected: index === selectedIndex, onClick: () => {
79
- shortcut.action();
80
- handleClose();
81
- }, sx: {
82
- py: 1.5,
83
- px: 3,
84
- borderLeft: `4px solid transparent`,
85
- "&.Mui-selected": {
86
- borderLeftColor: theme.palette.primary.main,
87
- bgcolor: alpha(theme.palette.primary.main, 0.08),
88
- "&:hover": {
89
- bgcolor: alpha(theme.palette.primary.main, 0.12),
90
- },
91
- },
92
- }, children: [_jsx(ListItemIcon, { sx: { minWidth: 40 }, children: _jsx(KeyboardCommandKeyIcon, { fontSize: "small", color: index === selectedIndex ? "primary" : "action" }) }), _jsx(ListItemText, { primary: shortcut.description, secondary: shortcut.category, primaryTypographyProps: {
93
- fontWeight: index === selectedIndex ? 600 : 400,
94
- color: index === selectedIndex
95
- ? "text.primary"
96
- : "text.secondary",
97
- } }), _jsx(Box, { display: "flex", gap: 0.5, children: Array.isArray(shortcut.keys) ? (shortcut.keys.map((k) => _jsx(KeyChip, { k: k }, k))) : (_jsx(KeyChip, { k: shortcut.keys })) })] }) }, shortcut.id))) })) }), _jsxs(Box, { sx: {
98
- p: 1,
99
- px: 2,
100
- bgcolor: alpha(theme.palette.action.hover, 0.5),
101
- display: "flex",
102
- justifyContent: "space-between",
103
- borderTop: `1px solid ${theme.palette.divider}`,
104
- }, children: [_jsxs(Typography, { variant: "caption", color: "text.secondary", children: [_jsx("strong", { children: "\u2191\u2193" }), " to navigate"] }), _jsxs(Typography, { variant: "caption", color: "text.secondary", children: [_jsx("strong", { children: "\u21B5" }), " to select"] })] })] }));
105
- }
106
- function KeyChip({ k }) {
107
- // Format key: "meta+k" -> "⌘ K"
108
- const label = k
109
- .replace("meta", "⌘")
110
- .replace("ctrl", "⌃")
111
- .replace("shift", "⇧")
112
- .replace("alt", "⌥")
113
- .toUpperCase();
114
- return (_jsx(Chip, { label: label, size: "small", variant: "outlined", sx: {
115
- height: 20,
116
- fontSize: "0.65rem",
117
- borderRadius: 1,
118
- minWidth: 24,
119
- bgcolor: "background.paper",
120
- borderColor: "divider",
121
- } }));
122
- }
123
- //# sourceMappingURL=CommandPalette.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../../src/components/keyboard/CommandPalette.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export default function GlobalShortcuts(): null;
2
- //# sourceMappingURL=GlobalShortcuts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GlobalShortcuts.d.ts","sourceRoot":"","sources":["../../../src/components/keyboard/GlobalShortcuts.tsx"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,eAAe,SAgCtC"}
@@ -1,32 +0,0 @@
1
- "use client";
2
- import { useRouter } from "next/navigation";
3
- import { useShortcut } from "@/lib/keyboard/useShortcut";
4
- export default function GlobalShortcuts() {
5
- const router = useRouter();
6
- // Navigation: Dashboard
7
- useShortcut("g+d", () => router.push("/admin/dashboard"), {
8
- description: "Go to Dashboard",
9
- category: "Navigation",
10
- scope: "global",
11
- });
12
- // Navigation: Tickets
13
- useShortcut("g+t", () => router.push("/admin/tickets"), {
14
- description: "Go to Tickets",
15
- category: "Navigation",
16
- scope: "global",
17
- });
18
- // Navigation: Settings
19
- useShortcut("g+s", () => router.push("/admin/settings"), {
20
- description: "Go to Settings",
21
- category: "Navigation",
22
- scope: "global",
23
- });
24
- // Action: Create Ticket
25
- useShortcut("c", () => router.push("/admin/tickets/create"), {
26
- description: "Create New Ticket",
27
- category: "Actions",
28
- scope: "global",
29
- });
30
- return null; // Headless component
31
- }
32
- //# sourceMappingURL=GlobalShortcuts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GlobalShortcuts.js","sourceRoot":"","sources":["../../../src/components/keyboard/GlobalShortcuts.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,eAAe;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,wBAAwB;IACxB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;QACxD,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,sBAAsB;IACtB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;QACtD,WAAW,EAAE,eAAe;QAC5B,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,uBAAuB;IACvB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;QACvD,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,wBAAwB;IACxB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;QAC3D,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,CAAC,qBAAqB;AACpC,CAAC"}