@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.
@@ -1 +1 @@
1
- {"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/TaskCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAe7C,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,CAyO5C,CAAC"}
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,CA0YrB"}
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"}
@@ -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: title || `Task ${id}`,
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 = value.trim();
6269
+ result.status = cleanValue;
6261
6270
  break;
6262
6271
  case "priority":
6263
- result.priority = value.trim();
6272
+ result.priority = cleanValue;
6264
6273
  break;
6265
6274
  case "ordinal":
6266
- result.ordinal = parseInt(value.trim(), 10);
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] = value.trim();
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
- "div",
8329
- {
8330
- ref: setNodeRef,
8331
- style: style2,
8332
- onClick: handleClick,
8333
- ...listeners,
8334
- ...attributes,
8335
- onMouseEnter: (e) => {
8336
- if (!isDragging && !isDragOverlay) {
8337
- const desc = e.currentTarget.querySelector("p");
8338
- if (desc) {
8339
- desc.style.maxHeight = "20em";
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
- e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
8342
- }
8343
- },
8344
- onMouseLeave: (e) => {
8345
- if (!isDragging && !isDragOverlay) {
8346
- const desc = e.currentTarget.querySelector("p");
8347
- if (desc) {
8348
- desc.style.maxHeight = "2.8em";
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
- e.currentTarget.style.borderLeft = `4px solid ${getPriorityColor(task.priority)}`;
8351
- }
8352
- },
8353
- children: [
8354
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "6px", marginBottom: "8px" }, children: [
8355
- /* @__PURE__ */ jsx(
8356
- "h4",
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[2],
8361
- color: isSelected ? getPriorityColor(task.priority) : theme2.colors.text,
8362
- fontWeight: theme2.fontWeights.medium,
8363
- flex: 1
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: displayTitle
8507
+ children: task.description
8366
8508
  }
8367
8509
  ),
8368
- getGitHubIssueFromRefs$1(task.references) && /* @__PURE__ */ jsx(
8510
+ task.labels && task.labels.length > 0 && /* @__PURE__ */ jsx(
8369
8511
  "div",
8370
8512
  {
8371
8513
  style: {
8372
8514
  display: "flex",
8373
- alignItems: "center",
8374
- gap: "3px",
8375
- padding: "2px 6px",
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
- title: "Assigned to Claude",
8384
- children: /* @__PURE__ */ jsx(GitBranch, { size: 10 })
8385
- }
8386
- )
8387
- ] }),
8388
- task.description && /* @__PURE__ */ jsx(
8389
- "p",
8390
- {
8391
- style: {
8392
- margin: "0 0 8px 0",
8393
- fontSize: theme2.fontSizes[1],
8394
- color: theme2.colors.textSecondary,
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
- children: label
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
- label
8427
- ))
8428
- }
8429
- ),
8430
- /* @__PURE__ */ jsxs(
8431
- "div",
8432
- {
8433
- style: {
8434
- display: "flex",
8435
- alignItems: "center",
8436
- justifyContent: "space-between",
8437
- fontSize: theme2.fontSizes[0],
8438
- color: theme2.colors.textMuted
8439
- },
8440
- children: [
8441
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
8442
- /* @__PURE__ */ jsx(
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
- fontFamily: theme2.fonts.monospace
8589
+ color: theme2.colors.textSecondary
8447
8590
  },
8448
- children: task.id
8591
+ children: [
8592
+ task.assignee.length,
8593
+ " assignee",
8594
+ task.assignee.length !== 1 ? "s" : ""
8595
+ ]
8449
8596
  }
8450
- ),
8451
- (() => {
8452
- const issue = getGitHubIssueFromRefs$1(task.references);
8453
- if (!issue) return null;
8454
- return /* @__PURE__ */ jsxs(
8455
- "a",
8456
- {
8457
- href: issue.url,
8458
- target: "_blank",
8459
- rel: "noopener noreferrer",
8460
- onClick: (e) => e.stopPropagation(),
8461
- style: {
8462
- display: "inline-flex",
8463
- alignItems: "center",
8464
- gap: "3px",
8465
- color: theme2.colors.primary,
8466
- textDecoration: "none",
8467
- fontSize: theme2.fontSizes[0]
8468
- },
8469
- title: `View issue #${issue.number} on GitHub`,
8470
- children: [
8471
- /* @__PURE__ */ jsx(ExternalLink, { size: 10 }),
8472
- "#",
8473
- issue.number
8474
- ]
8475
- }
8476
- );
8477
- })()
8478
- ] }),
8479
- task.assignee && task.assignee.length > 0 && /* @__PURE__ */ jsxs(
8480
- "span",
8481
- {
8482
- style: {
8483
- color: theme2.colors.textSecondary
8484
- },
8485
- children: [
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,