@industry-theme/backlogmd-kanban-panel 1.0.37 → 1.0.39
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/dist/panels/kanban/components/TaskCard.d.ts.map +1 -1
- package/dist/panels/kanban/components/TaskContextMenu.d.ts +13 -0
- package/dist/panels/kanban/components/TaskContextMenu.d.ts.map +1 -0
- package/dist/panels/kanban/hooks/useKanbanData.d.ts.map +1 -1
- package/dist/panels/kanban/mocks/realRepoData.d.ts +12 -0
- package/dist/panels/kanban/mocks/realRepoData.d.ts.map +1 -0
- package/dist/panels.bundle.js +293 -158
- package/dist/panels.bundle.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAgB7C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAgS5C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Task } from '@backlog-md/core';
|
|
3
|
+
export interface TaskContextMenuProps {
|
|
4
|
+
task: Task;
|
|
5
|
+
position: {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
};
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
onCopyPath: (task: Task) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare const TaskContextMenu: React.FC<TaskContextMenuProps>;
|
|
13
|
+
//# sourceMappingURL=TaskContextMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskContextMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4E1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKanbanData.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/hooks/useKanbanData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,EAAwB,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtE,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,qBAAqB,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAE5F,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,YAAY,EAIxC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC7C,mDAAmD;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,+CAA+C;IAC/C,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,yDAAyD;IACzD,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACpD,mCAAmC;IACnC,eAAe,EAAE,gBAAgB,CAAC;IAClC,sBAAsB;IACtB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,4EAA4E;IAC5E,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IACrE,wBAAwB;IACxB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAClD,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"useKanbanData.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/hooks/useKanbanData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,EAAwB,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtE,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,qBAAqB,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAE5F,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,YAAY,EAIxC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC7C,mDAAmD;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,+CAA+C;IAC/C,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,yDAAyD;IACzD,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACpD,mCAAmC;IACnC,eAAe,EAAE,gBAAgB,CAAC;IAClC,sBAAsB;IACtB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,4EAA4E;IAC5E,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IACrE,wBAAwB;IACxB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;IAClD,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,mBAAmB,CAqZrB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated mock data from real repository
|
|
3
|
+
* Generated from: /Users/griever/Developer/industry-themed-panels/industry-themed-agent-skills-panel
|
|
4
|
+
* Generated at: 2026-01-10T17:49:30.825Z
|
|
5
|
+
*
|
|
6
|
+
* To regenerate: tsx scripts/generate-real-repo-mock.ts <path-to-repo>
|
|
7
|
+
*/
|
|
8
|
+
export declare const REAL_REPO_NAME = "industry-themed-agent-skills-panel";
|
|
9
|
+
export declare const REAL_REPO_PATH = "/Users/griever/Developer/industry-themed-panels/industry-themed-agent-skills-panel";
|
|
10
|
+
export declare const realRepoFilePaths: string[];
|
|
11
|
+
export declare const realRepoFileContents: Record<string, string>;
|
|
12
|
+
//# sourceMappingURL=realRepoData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realRepoData.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/mocks/realRepoData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,cAAc,uCAAuC,CAAC;AACnE,eAAO,MAAM,cAAc,uFAAuF,CAAC;AAEnH,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAOrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvD,CAAC"}
|
package/dist/panels.bundle.js
CHANGED
|
@@ -6132,10 +6132,11 @@ const DEFAULT_TASK_STATUSES = {
|
|
|
6132
6132
|
};
|
|
6133
6133
|
function parseTaskMarkdown(content2, filePath) {
|
|
6134
6134
|
const { frontmatter, title, rawContent, acceptanceCriteria, description } = parseMarkdownContent(content2);
|
|
6135
|
-
const id = extractIdFromPath(filePath);
|
|
6135
|
+
const id = frontmatter.id || extractIdFromPath(filePath);
|
|
6136
|
+
const taskTitle = frontmatter.title || title || `Task ${id}`;
|
|
6136
6137
|
return {
|
|
6137
6138
|
id,
|
|
6138
|
-
title:
|
|
6139
|
+
title: taskTitle,
|
|
6139
6140
|
status: frontmatter.status || "backlog",
|
|
6140
6141
|
priority: frontmatter.priority,
|
|
6141
6142
|
assignee: frontmatter.assignee || [],
|
|
@@ -6255,15 +6256,23 @@ function parseFrontmatter(raw2) {
|
|
|
6255
6256
|
if (!match)
|
|
6256
6257
|
continue;
|
|
6257
6258
|
const [, key2, value] = match;
|
|
6259
|
+
let cleanValue = value.trim();
|
|
6260
|
+
if (cleanValue.startsWith('"') && cleanValue.endsWith('"') || cleanValue.startsWith("'") && cleanValue.endsWith("'")) {
|
|
6261
|
+
cleanValue = cleanValue.slice(1, -1);
|
|
6262
|
+
}
|
|
6258
6263
|
switch (key2) {
|
|
6264
|
+
case "id":
|
|
6265
|
+
case "title":
|
|
6266
|
+
result[key2] = cleanValue;
|
|
6267
|
+
break;
|
|
6259
6268
|
case "status":
|
|
6260
|
-
result.status =
|
|
6269
|
+
result.status = cleanValue;
|
|
6261
6270
|
break;
|
|
6262
6271
|
case "priority":
|
|
6263
|
-
result.priority =
|
|
6272
|
+
result.priority = cleanValue;
|
|
6264
6273
|
break;
|
|
6265
6274
|
case "ordinal":
|
|
6266
|
-
result.ordinal = parseInt(
|
|
6275
|
+
result.ordinal = parseInt(cleanValue, 10);
|
|
6267
6276
|
break;
|
|
6268
6277
|
case "reporter":
|
|
6269
6278
|
case "milestone":
|
|
@@ -6271,7 +6280,7 @@ function parseFrontmatter(raw2) {
|
|
|
6271
6280
|
case "branch":
|
|
6272
6281
|
case "createdDate":
|
|
6273
6282
|
case "updatedDate":
|
|
6274
|
-
result[key2] =
|
|
6283
|
+
result[key2] = cleanValue;
|
|
6275
6284
|
break;
|
|
6276
6285
|
case "assignee":
|
|
6277
6286
|
case "labels":
|
|
@@ -8098,6 +8107,15 @@ function useKanbanData(options) {
|
|
|
8098
8107
|
console.log(
|
|
8099
8108
|
`[useKanbanData] Loaded ${allTasks.length}/${total} tasks`
|
|
8100
8109
|
);
|
|
8110
|
+
if (allTasks.length > 0) {
|
|
8111
|
+
console.log("[useKanbanData] First task sample:", {
|
|
8112
|
+
id: allTasks[0].id,
|
|
8113
|
+
title: allTasks[0].title,
|
|
8114
|
+
status: allTasks[0].status,
|
|
8115
|
+
description: allTasks[0].description,
|
|
8116
|
+
filePath: allTasks[0].filePath
|
|
8117
|
+
});
|
|
8118
|
+
}
|
|
8101
8119
|
fileTreeVersionRef.current = currentVersion;
|
|
8102
8120
|
const newColumnStates = buildColumnStates(allTasks);
|
|
8103
8121
|
setTasks(allTasks);
|
|
@@ -8256,6 +8274,73 @@ function useKanbanData(options) {
|
|
|
8256
8274
|
core: coreRef.current
|
|
8257
8275
|
};
|
|
8258
8276
|
}
|
|
8277
|
+
const TaskContextMenu = ({
|
|
8278
|
+
task,
|
|
8279
|
+
position: position2,
|
|
8280
|
+
onClose,
|
|
8281
|
+
onCopyPath
|
|
8282
|
+
}) => {
|
|
8283
|
+
const menuRef = useRef(null);
|
|
8284
|
+
useEffect(() => {
|
|
8285
|
+
const handleClickOutside = (e) => {
|
|
8286
|
+
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
8287
|
+
onClose();
|
|
8288
|
+
}
|
|
8289
|
+
};
|
|
8290
|
+
const handleEscape = (e) => {
|
|
8291
|
+
if (e.key === "Escape") {
|
|
8292
|
+
onClose();
|
|
8293
|
+
}
|
|
8294
|
+
};
|
|
8295
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
8296
|
+
document.addEventListener("keydown", handleEscape);
|
|
8297
|
+
return () => {
|
|
8298
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
8299
|
+
document.removeEventListener("keydown", handleEscape);
|
|
8300
|
+
};
|
|
8301
|
+
}, [onClose]);
|
|
8302
|
+
const handleCopyPath = () => {
|
|
8303
|
+
onCopyPath(task);
|
|
8304
|
+
onClose();
|
|
8305
|
+
};
|
|
8306
|
+
const menuStyle = {
|
|
8307
|
+
position: "fixed",
|
|
8308
|
+
top: position2.y,
|
|
8309
|
+
left: position2.x,
|
|
8310
|
+
backgroundColor: "#ffffff",
|
|
8311
|
+
border: "1px solid #e0e0e0",
|
|
8312
|
+
borderRadius: "4px",
|
|
8313
|
+
boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)",
|
|
8314
|
+
padding: "4px 0",
|
|
8315
|
+
minWidth: "180px",
|
|
8316
|
+
zIndex: 1e4
|
|
8317
|
+
};
|
|
8318
|
+
const menuItemStyle = {
|
|
8319
|
+
padding: "8px 16px",
|
|
8320
|
+
cursor: "pointer",
|
|
8321
|
+
fontSize: "14px",
|
|
8322
|
+
color: "#333",
|
|
8323
|
+
transition: "background-color 0.15s ease"
|
|
8324
|
+
};
|
|
8325
|
+
const menuItemHoverStyle = {
|
|
8326
|
+
...menuItemStyle,
|
|
8327
|
+
backgroundColor: "#f5f5f5"
|
|
8328
|
+
};
|
|
8329
|
+
const [isHovering, setIsHovering] = React2__default.useState(false);
|
|
8330
|
+
return createPortal(
|
|
8331
|
+
/* @__PURE__ */ jsx("div", { ref: menuRef, style: menuStyle, children: /* @__PURE__ */ jsx(
|
|
8332
|
+
"div",
|
|
8333
|
+
{
|
|
8334
|
+
style: isHovering ? menuItemHoverStyle : menuItemStyle,
|
|
8335
|
+
onMouseEnter: () => setIsHovering(true),
|
|
8336
|
+
onMouseLeave: () => setIsHovering(false),
|
|
8337
|
+
onClick: handleCopyPath,
|
|
8338
|
+
children: "Copy Task Path"
|
|
8339
|
+
}
|
|
8340
|
+
) }),
|
|
8341
|
+
document.body
|
|
8342
|
+
);
|
|
8343
|
+
};
|
|
8259
8344
|
function getGitHubIssueFromRefs$1(references) {
|
|
8260
8345
|
if (!references) return null;
|
|
8261
8346
|
for (const ref of references) {
|
|
@@ -8273,6 +8358,8 @@ const TaskCard = ({
|
|
|
8273
8358
|
isSelected = false
|
|
8274
8359
|
}) => {
|
|
8275
8360
|
const { theme: theme2 } = useTheme();
|
|
8361
|
+
const [contextMenuPosition, setContextMenuPosition] = useState(null);
|
|
8362
|
+
const [copyFeedback, setCopyFeedback] = useState(false);
|
|
8276
8363
|
const {
|
|
8277
8364
|
attributes,
|
|
8278
8365
|
listeners,
|
|
@@ -8323,178 +8410,226 @@ const TaskCard = ({
|
|
|
8323
8410
|
onClick(task);
|
|
8324
8411
|
}
|
|
8325
8412
|
};
|
|
8413
|
+
const handleContextMenu = (e) => {
|
|
8414
|
+
if (isDragging) return;
|
|
8415
|
+
e.preventDefault();
|
|
8416
|
+
e.stopPropagation();
|
|
8417
|
+
setContextMenuPosition({ x: e.clientX, y: e.clientY });
|
|
8418
|
+
};
|
|
8419
|
+
const handleCopyPath = async (task2) => {
|
|
8420
|
+
if (task2.filePath) {
|
|
8421
|
+
try {
|
|
8422
|
+
await navigator.clipboard.writeText(task2.filePath);
|
|
8423
|
+
setCopyFeedback(true);
|
|
8424
|
+
setTimeout(() => setCopyFeedback(false), 2e3);
|
|
8425
|
+
} catch (err) {
|
|
8426
|
+
console.error("Failed to copy task path:", err);
|
|
8427
|
+
}
|
|
8428
|
+
}
|
|
8429
|
+
};
|
|
8326
8430
|
const displayTitle = task.title.replace(/^Task\s+\d+\s*[:\-–—]?\s*/i, "").trim() || task.title;
|
|
8327
|
-
return /* @__PURE__ */ jsxs(
|
|
8328
|
-
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
if (
|
|
8339
|
-
desc
|
|
8431
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8432
|
+
/* @__PURE__ */ jsxs(
|
|
8433
|
+
"div",
|
|
8434
|
+
{
|
|
8435
|
+
ref: setNodeRef,
|
|
8436
|
+
style: style2,
|
|
8437
|
+
onClick: handleClick,
|
|
8438
|
+
onContextMenu: handleContextMenu,
|
|
8439
|
+
...listeners,
|
|
8440
|
+
...attributes,
|
|
8441
|
+
onMouseEnter: (e) => {
|
|
8442
|
+
if (!isDragging && !isDragOverlay) {
|
|
8443
|
+
const desc = e.currentTarget.querySelector("p");
|
|
8444
|
+
if (desc) {
|
|
8445
|
+
desc.style.maxHeight = "20em";
|
|
8446
|
+
}
|
|
8447
|
+
e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
|
|
8340
8448
|
}
|
|
8341
|
-
|
|
8342
|
-
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
|
|
8347
|
-
|
|
8348
|
-
|
|
8449
|
+
},
|
|
8450
|
+
onMouseLeave: (e) => {
|
|
8451
|
+
if (!isDragging && !isDragOverlay) {
|
|
8452
|
+
const desc = e.currentTarget.querySelector("p");
|
|
8453
|
+
if (desc) {
|
|
8454
|
+
desc.style.maxHeight = "2.8em";
|
|
8455
|
+
}
|
|
8456
|
+
e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
|
|
8349
8457
|
}
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
|
|
8353
|
-
|
|
8354
|
-
|
|
8355
|
-
|
|
8356
|
-
|
|
8458
|
+
},
|
|
8459
|
+
children: [
|
|
8460
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
|
|
8461
|
+
/* @__PURE__ */ jsx(
|
|
8462
|
+
"h4",
|
|
8463
|
+
{
|
|
8464
|
+
style: {
|
|
8465
|
+
margin: 0,
|
|
8466
|
+
fontSize: theme2.fontSizes[2],
|
|
8467
|
+
color: isSelected ? getPriorityColor(task.priority) : theme2.colors.text,
|
|
8468
|
+
fontWeight: theme2.fontWeights.medium,
|
|
8469
|
+
flex: 1
|
|
8470
|
+
},
|
|
8471
|
+
children: displayTitle
|
|
8472
|
+
}
|
|
8473
|
+
),
|
|
8474
|
+
getGitHubIssueFromRefs$1(task.references) && /* @__PURE__ */ jsx(
|
|
8475
|
+
"div",
|
|
8476
|
+
{
|
|
8477
|
+
style: {
|
|
8478
|
+
display: "flex",
|
|
8479
|
+
alignItems: "center",
|
|
8480
|
+
gap: "3px",
|
|
8481
|
+
padding: "2px 6px",
|
|
8482
|
+
borderRadius: theme2.radii[1],
|
|
8483
|
+
background: `${theme2.colors.success}20`,
|
|
8484
|
+
color: theme2.colors.success,
|
|
8485
|
+
fontSize: theme2.fontSizes[0],
|
|
8486
|
+
fontWeight: theme2.fontWeights.medium,
|
|
8487
|
+
flexShrink: 0
|
|
8488
|
+
},
|
|
8489
|
+
title: "Assigned to Claude",
|
|
8490
|
+
children: /* @__PURE__ */ jsx(GitBranch, { size: 10 })
|
|
8491
|
+
}
|
|
8492
|
+
)
|
|
8493
|
+
] }),
|
|
8494
|
+
task.description && /* @__PURE__ */ jsx(
|
|
8495
|
+
"p",
|
|
8357
8496
|
{
|
|
8358
8497
|
style: {
|
|
8359
|
-
margin: 0,
|
|
8360
|
-
fontSize: theme2.fontSizes[
|
|
8361
|
-
color:
|
|
8362
|
-
|
|
8363
|
-
|
|
8498
|
+
margin: "0 0 8px 0",
|
|
8499
|
+
fontSize: theme2.fontSizes[1],
|
|
8500
|
+
color: theme2.colors.textSecondary,
|
|
8501
|
+
overflow: "hidden",
|
|
8502
|
+
lineHeight: "1.4",
|
|
8503
|
+
maxHeight: "2.8em",
|
|
8504
|
+
// 2 lines (1.4 * 2)
|
|
8505
|
+
transition: "max-height 0.3s ease"
|
|
8364
8506
|
},
|
|
8365
|
-
children:
|
|
8507
|
+
children: task.description
|
|
8366
8508
|
}
|
|
8367
8509
|
),
|
|
8368
|
-
|
|
8510
|
+
task.labels && task.labels.length > 0 && /* @__PURE__ */ jsx(
|
|
8369
8511
|
"div",
|
|
8370
8512
|
{
|
|
8371
8513
|
style: {
|
|
8372
8514
|
display: "flex",
|
|
8373
|
-
|
|
8374
|
-
|
|
8375
|
-
|
|
8376
|
-
borderRadius: theme2.radii[1],
|
|
8377
|
-
background: `${theme2.colors.success}20`,
|
|
8378
|
-
color: theme2.colors.success,
|
|
8379
|
-
fontSize: theme2.fontSizes[0],
|
|
8380
|
-
fontWeight: theme2.fontWeights.medium,
|
|
8381
|
-
flexShrink: 0
|
|
8515
|
+
gap: "4px",
|
|
8516
|
+
flexWrap: "wrap",
|
|
8517
|
+
marginBottom: "8px"
|
|
8382
8518
|
},
|
|
8383
|
-
|
|
8384
|
-
|
|
8385
|
-
|
|
8386
|
-
|
|
8387
|
-
|
|
8388
|
-
|
|
8389
|
-
|
|
8390
|
-
|
|
8391
|
-
|
|
8392
|
-
|
|
8393
|
-
|
|
8394
|
-
|
|
8395
|
-
overflow: "hidden",
|
|
8396
|
-
lineHeight: "1.4",
|
|
8397
|
-
maxHeight: "2.8em",
|
|
8398
|
-
// 2 lines (1.4 * 2)
|
|
8399
|
-
transition: "max-height 0.3s ease"
|
|
8400
|
-
},
|
|
8401
|
-
children: task.description
|
|
8402
|
-
}
|
|
8403
|
-
),
|
|
8404
|
-
task.labels && task.labels.length > 0 && /* @__PURE__ */ jsx(
|
|
8405
|
-
"div",
|
|
8406
|
-
{
|
|
8407
|
-
style: {
|
|
8408
|
-
display: "flex",
|
|
8409
|
-
gap: "4px",
|
|
8410
|
-
flexWrap: "wrap",
|
|
8411
|
-
marginBottom: "8px"
|
|
8412
|
-
},
|
|
8413
|
-
children: task.labels.map((label) => /* @__PURE__ */ jsx(
|
|
8414
|
-
"span",
|
|
8415
|
-
{
|
|
8416
|
-
style: {
|
|
8417
|
-
fontSize: theme2.fontSizes[0],
|
|
8418
|
-
color: theme2.colors.primary,
|
|
8419
|
-
background: `${theme2.colors.primary}20`,
|
|
8420
|
-
padding: "2px 8px",
|
|
8421
|
-
borderRadius: theme2.radii[1],
|
|
8422
|
-
fontWeight: theme2.fontWeights.medium
|
|
8519
|
+
children: task.labels.map((label) => /* @__PURE__ */ jsx(
|
|
8520
|
+
"span",
|
|
8521
|
+
{
|
|
8522
|
+
style: {
|
|
8523
|
+
fontSize: theme2.fontSizes[0],
|
|
8524
|
+
color: theme2.colors.primary,
|
|
8525
|
+
background: `${theme2.colors.primary}20`,
|
|
8526
|
+
padding: "2px 8px",
|
|
8527
|
+
borderRadius: theme2.radii[1],
|
|
8528
|
+
fontWeight: theme2.fontWeights.medium
|
|
8529
|
+
},
|
|
8530
|
+
children: label
|
|
8423
8531
|
},
|
|
8424
|
-
|
|
8532
|
+
label
|
|
8533
|
+
))
|
|
8534
|
+
}
|
|
8535
|
+
),
|
|
8536
|
+
/* @__PURE__ */ jsxs(
|
|
8537
|
+
"div",
|
|
8538
|
+
{
|
|
8539
|
+
style: {
|
|
8540
|
+
display: "flex",
|
|
8541
|
+
alignItems: "center",
|
|
8542
|
+
justifyContent: "space-between",
|
|
8543
|
+
fontSize: theme2.fontSizes[0],
|
|
8544
|
+
color: theme2.colors.textMuted
|
|
8425
8545
|
},
|
|
8426
|
-
|
|
8427
|
-
|
|
8428
|
-
|
|
8429
|
-
|
|
8430
|
-
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8439
|
-
|
|
8440
|
-
|
|
8441
|
-
|
|
8442
|
-
|
|
8546
|
+
children: [
|
|
8547
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
|
|
8548
|
+
/* @__PURE__ */ jsx(
|
|
8549
|
+
"span",
|
|
8550
|
+
{
|
|
8551
|
+
style: {
|
|
8552
|
+
fontFamily: theme2.fonts.monospace
|
|
8553
|
+
},
|
|
8554
|
+
children: task.id
|
|
8555
|
+
}
|
|
8556
|
+
),
|
|
8557
|
+
(() => {
|
|
8558
|
+
const issue = getGitHubIssueFromRefs$1(task.references);
|
|
8559
|
+
if (!issue) return null;
|
|
8560
|
+
return /* @__PURE__ */ jsxs(
|
|
8561
|
+
"a",
|
|
8562
|
+
{
|
|
8563
|
+
href: issue.url,
|
|
8564
|
+
target: "_blank",
|
|
8565
|
+
rel: "noopener noreferrer",
|
|
8566
|
+
onClick: (e) => e.stopPropagation(),
|
|
8567
|
+
style: {
|
|
8568
|
+
display: "inline-flex",
|
|
8569
|
+
alignItems: "center",
|
|
8570
|
+
gap: "3px",
|
|
8571
|
+
color: theme2.colors.primary,
|
|
8572
|
+
textDecoration: "none",
|
|
8573
|
+
fontSize: theme2.fontSizes[0]
|
|
8574
|
+
},
|
|
8575
|
+
title: `View issue #${issue.number} on GitHub`,
|
|
8576
|
+
children: [
|
|
8577
|
+
/* @__PURE__ */ jsx(ExternalLink, { size: 10 }),
|
|
8578
|
+
"#",
|
|
8579
|
+
issue.number
|
|
8580
|
+
]
|
|
8581
|
+
}
|
|
8582
|
+
);
|
|
8583
|
+
})()
|
|
8584
|
+
] }),
|
|
8585
|
+
task.assignee && task.assignee.length > 0 && /* @__PURE__ */ jsxs(
|
|
8443
8586
|
"span",
|
|
8444
8587
|
{
|
|
8445
8588
|
style: {
|
|
8446
|
-
|
|
8589
|
+
color: theme2.colors.textSecondary
|
|
8447
8590
|
},
|
|
8448
|
-
children:
|
|
8591
|
+
children: [
|
|
8592
|
+
task.assignee.length,
|
|
8593
|
+
" assignee",
|
|
8594
|
+
task.assignee.length !== 1 ? "s" : ""
|
|
8595
|
+
]
|
|
8449
8596
|
}
|
|
8450
|
-
)
|
|
8451
|
-
|
|
8452
|
-
|
|
8453
|
-
|
|
8454
|
-
|
|
8455
|
-
|
|
8456
|
-
|
|
8457
|
-
|
|
8458
|
-
|
|
8459
|
-
|
|
8460
|
-
|
|
8461
|
-
|
|
8462
|
-
|
|
8463
|
-
|
|
8464
|
-
|
|
8465
|
-
|
|
8466
|
-
|
|
8467
|
-
|
|
8468
|
-
|
|
8469
|
-
|
|
8470
|
-
|
|
8471
|
-
|
|
8472
|
-
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
|
|
8481
|
-
|
|
8482
|
-
|
|
8483
|
-
|
|
8484
|
-
|
|
8485
|
-
|
|
8486
|
-
task.assignee.length,
|
|
8487
|
-
" assignee",
|
|
8488
|
-
task.assignee.length !== 1 ? "s" : ""
|
|
8489
|
-
]
|
|
8490
|
-
}
|
|
8491
|
-
)
|
|
8492
|
-
]
|
|
8493
|
-
}
|
|
8494
|
-
)
|
|
8495
|
-
]
|
|
8496
|
-
}
|
|
8497
|
-
);
|
|
8597
|
+
)
|
|
8598
|
+
]
|
|
8599
|
+
}
|
|
8600
|
+
)
|
|
8601
|
+
]
|
|
8602
|
+
}
|
|
8603
|
+
),
|
|
8604
|
+
contextMenuPosition && /* @__PURE__ */ jsx(
|
|
8605
|
+
TaskContextMenu,
|
|
8606
|
+
{
|
|
8607
|
+
task,
|
|
8608
|
+
position: contextMenuPosition,
|
|
8609
|
+
onClose: () => setContextMenuPosition(null),
|
|
8610
|
+
onCopyPath: handleCopyPath
|
|
8611
|
+
}
|
|
8612
|
+
),
|
|
8613
|
+
copyFeedback && /* @__PURE__ */ jsx(
|
|
8614
|
+
"div",
|
|
8615
|
+
{
|
|
8616
|
+
style: {
|
|
8617
|
+
position: "fixed",
|
|
8618
|
+
bottom: "20px",
|
|
8619
|
+
right: "20px",
|
|
8620
|
+
background: theme2.colors.success,
|
|
8621
|
+
color: "white",
|
|
8622
|
+
padding: "12px 16px",
|
|
8623
|
+
borderRadius: theme2.radii[2],
|
|
8624
|
+
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
|
|
8625
|
+
zIndex: 10001,
|
|
8626
|
+
fontSize: theme2.fontSizes[1],
|
|
8627
|
+
fontWeight: theme2.fontWeights.medium
|
|
8628
|
+
},
|
|
8629
|
+
children: "Task path copied to clipboard!"
|
|
8630
|
+
}
|
|
8631
|
+
)
|
|
8632
|
+
] });
|
|
8498
8633
|
};
|
|
8499
8634
|
const KanbanColumn = ({
|
|
8500
8635
|
columnId,
|