@industry-theme/backlogmd-kanban-panel 1.1.0 → 1.1.2

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":"KanbanPanel.d.ts","sourceRoot":"","sources":["../../src/panels/KanbanPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAC;AAelG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAiBtD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAi4CvD,CAAC"}
1
+ {"version":3,"file":"KanbanPanel.d.ts","sourceRoot":"","sources":["../../src/panels/KanbanPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAC;AAelG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAiBtD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+8CvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,UAAU,CAAC;AAsG7E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAiDD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgvB1D,CAAC"}
1
+ {"version":3,"file":"TaskDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/TaskDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,UAAU,CAAC;AAuG7E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAiDD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA0yB1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BoardEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/BoardEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAK3C,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2I1D,CAAC"}
1
+ {"version":3,"file":"BoardEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/panels/kanban/components/BoardEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAK3C,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqJ1D,CAAC"}
@@ -9871,17 +9871,27 @@ const BoardEmptyState = ({
9871
9871
  }) => {
9872
9872
  const { theme: theme2 } = useTheme();
9873
9873
  const handleAddTask = useCallback(() => {
9874
- const activeSpan = getActiveSpan();
9875
- activeSpan == null ? void 0 : activeSpan.addEvent("empty.action.clicked", {
9874
+ const tracer = getTracer();
9875
+ const span = tracer.startSpan("board.interaction", {
9876
+ attributes: { "action.type": "add_task" }
9877
+ });
9878
+ span.addEvent("empty.action.clicked", {
9876
9879
  "action.type": "add_task"
9877
9880
  });
9881
+ span.setStatus({ code: SpanStatusCode.OK });
9882
+ span.end();
9878
9883
  onAddTask();
9879
9884
  }, [onAddTask]);
9880
9885
  const handleAddMilestone = useCallback(() => {
9881
- const activeSpan = getActiveSpan();
9882
- activeSpan == null ? void 0 : activeSpan.addEvent("empty.action.clicked", {
9886
+ const tracer = getTracer();
9887
+ const span = tracer.startSpan("board.interaction", {
9888
+ attributes: { "action.type": "add_milestone" }
9889
+ });
9890
+ span.addEvent("empty.action.clicked", {
9883
9891
  "action.type": "add_milestone"
9884
9892
  });
9893
+ span.setStatus({ code: SpanStatusCode.OK });
9894
+ span.end();
9885
9895
  onAddMilestone();
9886
9896
  }, [onAddMilestone]);
9887
9897
  return /* @__PURE__ */ jsxs(
@@ -11084,26 +11094,68 @@ const KanbanPanel = ({
11084
11094
  const [searchQuery, setSearchQuery] = useState("");
11085
11095
  const [isSearchVisible, setIsSearchVisible] = useState(false);
11086
11096
  const searchDebounceRef = useRef(null);
11097
+ useEffect(() => {
11098
+ var _a2;
11099
+ const tracer = getTracer();
11100
+ const span = tracer.startSpan("panel.lifecycle", {
11101
+ attributes: {
11102
+ "panel.id": "kanban-panel"
11103
+ }
11104
+ });
11105
+ span.addEvent("panel.initialized", {
11106
+ "panel.id": "kanban-panel",
11107
+ "has.file.tree": Boolean((_a2 = context2 == null ? void 0 : context2.fileTree) == null ? void 0 : _a2.data),
11108
+ "has.file.system": Boolean(actions == null ? void 0 : actions.writeFile)
11109
+ });
11110
+ span.setStatus({ code: SpanStatusCode.OK });
11111
+ span.end();
11112
+ }, []);
11087
11113
  const handleSearchChange = useCallback((value) => {
11088
11114
  setSearchQuery(value);
11089
11115
  if (searchDebounceRef.current) {
11090
11116
  clearTimeout(searchDebounceRef.current);
11091
11117
  }
11092
11118
  searchDebounceRef.current = setTimeout(() => {
11093
- const activeSpan = getActiveSpan();
11094
11119
  if (value.trim()) {
11095
- activeSpan == null ? void 0 : activeSpan.addEvent("search.performed", {
11120
+ const tracer = getTracer();
11121
+ const span = tracer.startSpan("board.interaction", {
11122
+ attributes: {
11123
+ "search.query": value.trim()
11124
+ }
11125
+ });
11126
+ span.addEvent("search.performed", {
11096
11127
  "search.query": value.trim()
11097
- // Note: results.count is approximate since filteredTasksByStatus updates async
11098
11128
  });
11129
+ span.setStatus({ code: SpanStatusCode.OK });
11130
+ span.end();
11099
11131
  }
11100
11132
  }, 500);
11101
11133
  }, []);
11102
11134
  const handleClearSearch = useCallback(() => {
11103
11135
  setSearchQuery("");
11104
- const activeSpan = getActiveSpan();
11105
- activeSpan == null ? void 0 : activeSpan.addEvent("filter.cleared");
11136
+ const tracer = getTracer();
11137
+ const span = tracer.startSpan("board.interaction");
11138
+ span.addEvent("filter.cleared");
11139
+ span.setStatus({ code: SpanStatusCode.OK });
11140
+ span.end();
11106
11141
  }, []);
11142
+ const handleTabSelect = useCallback((status) => {
11143
+ const previousTab = selectedTab;
11144
+ setSelectedTab(status);
11145
+ const tracer = getTracer();
11146
+ const span = tracer.startSpan("board.interaction", {
11147
+ attributes: {
11148
+ "column.selected": status,
11149
+ "column.previous": previousTab
11150
+ }
11151
+ });
11152
+ span.addEvent("column.selected", {
11153
+ "column.status": status,
11154
+ "column.previous": previousTab
11155
+ });
11156
+ span.setStatus({ code: SpanStatusCode.OK });
11157
+ span.end();
11158
+ }, [selectedTab]);
11107
11159
  const sensors = useSensors(
11108
11160
  useSensor(PointerSensor, {
11109
11161
  activationConstraint: {
@@ -11176,6 +11228,24 @@ const KanbanPanel = ({
11176
11228
  context: context2,
11177
11229
  actions
11178
11230
  });
11231
+ const hasEmittedSkipped = useRef(false);
11232
+ useEffect(() => {
11233
+ if (!isLoading && !isBacklogProject && !hasEmittedSkipped.current) {
11234
+ hasEmittedSkipped.current = true;
11235
+ const tracer = getTracer();
11236
+ const span = tracer.startSpan("board.interaction", {
11237
+ attributes: { "is.backlog.project": false }
11238
+ });
11239
+ span.addEvent("kanban.skipped", {
11240
+ "reason": "not_backlog_project"
11241
+ });
11242
+ span.setStatus({ code: SpanStatusCode.OK });
11243
+ span.end();
11244
+ }
11245
+ if (isBacklogProject) {
11246
+ hasEmittedSkipped.current = false;
11247
+ }
11248
+ }, [isLoading, isBacklogProject]);
11179
11249
  const filteredTasksByStatus = useMemo(() => {
11180
11250
  if (!searchQuery.trim()) {
11181
11251
  return tasksByStatus;
@@ -11269,11 +11339,19 @@ const KanbanPanel = ({
11269
11339
  }, [getTaskById, moveTaskOptimistic]);
11270
11340
  const handleTaskClick = (task) => {
11271
11341
  setSelectedTaskId(task.id);
11272
- const activeSpan = getActiveSpan();
11273
- activeSpan == null ? void 0 : activeSpan.addEvent("task.selected", {
11342
+ const tracer = getTracer();
11343
+ const span = tracer.startSpan("board.interaction", {
11344
+ attributes: {
11345
+ "task.id": task.id,
11346
+ "task.status": task.status || "unknown"
11347
+ }
11348
+ });
11349
+ span.addEvent("task.selected", {
11274
11350
  "task.id": task.id,
11275
11351
  "task.status": task.status || "unknown"
11276
11352
  });
11353
+ span.setStatus({ code: SpanStatusCode.OK });
11354
+ span.end();
11277
11355
  if (events2) {
11278
11356
  events2.emit({
11279
11357
  type: "task:selected",
@@ -11893,7 +11971,7 @@ const KanbanPanel = ({
11893
11971
  return /* @__PURE__ */ jsxs(
11894
11972
  "button",
11895
11973
  {
11896
- onClick: () => setSelectedTab(status),
11974
+ onClick: () => handleTabSelect(status),
11897
11975
  style: {
11898
11976
  flex: 1,
11899
11977
  padding: "10px 12px",
@@ -56456,7 +56534,7 @@ const getPriorityStyles = (theme2, priority) => {
56456
56534
  };
56457
56535
  const StatusBadge = ({ status }) => {
56458
56536
  const { theme: theme2 } = useTheme();
56459
- return /* @__PURE__ */ jsx(
56537
+ return /* @__PURE__ */ jsxs(
56460
56538
  "span",
56461
56539
  {
56462
56540
  style: {
@@ -56469,7 +56547,10 @@ const StatusBadge = ({ status }) => {
56469
56547
  color: theme2.colors.primary,
56470
56548
  textTransform: "capitalize"
56471
56549
  },
56472
- children: status
56550
+ children: [
56551
+ "Status: ",
56552
+ status
56553
+ ]
56473
56554
  }
56474
56555
  );
56475
56556
  };
@@ -56494,6 +56575,16 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56494
56575
  const hasClaudeWorkflow = ((_a = repoCapabilities == null ? void 0 : repoCapabilities.data) == null ? void 0 : _a.hasClaudeWorkflow) ?? false;
56495
56576
  const handleAssignToClaude = useCallback(() => {
56496
56577
  if (!events2 || !selectedTask) return;
56578
+ const tracer = getTracer();
56579
+ const span = tracer.startSpan("detail.interaction", {
56580
+ attributes: { "task.id": selectedTask.id }
56581
+ });
56582
+ span.addEvent("task.assign.requested", {
56583
+ "task.id": selectedTask.id,
56584
+ "task.title": selectedTask.title
56585
+ });
56586
+ span.setStatus({ code: SpanStatusCode.OK });
56587
+ span.end();
56497
56588
  setClaudeAssignment({ status: "loading" });
56498
56589
  events2.emit({
56499
56590
  type: "task:assign-to-claude",
@@ -56518,6 +56609,19 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56518
56609
  }
56519
56610
  });
56520
56611
  }, [events2, selectedTask]);
56612
+ const handleOpenDeleteModal = useCallback(() => {
56613
+ if (!selectedTask) return;
56614
+ const tracer = getTracer();
56615
+ const span = tracer.startSpan("detail.interaction", {
56616
+ attributes: { "task.id": selectedTask.id }
56617
+ });
56618
+ span.addEvent("delete.modal.opened", {
56619
+ "task.id": selectedTask.id
56620
+ });
56621
+ span.setStatus({ code: SpanStatusCode.OK });
56622
+ span.end();
56623
+ setIsDeleteModalOpen(true);
56624
+ }, [selectedTask]);
56521
56625
  const handleDeleteConfirm = useCallback(() => {
56522
56626
  if (!events2 || !selectedTask) return;
56523
56627
  setDeleteState({ status: "loading" });
@@ -56579,6 +56683,15 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56579
56683
  events2.on("task:deleted:success", (event) => {
56580
56684
  const payload = event.payload;
56581
56685
  if (payload.taskId === (selectedTask == null ? void 0 : selectedTask.id)) {
56686
+ const tracer = getTracer();
56687
+ const span = tracer.startSpan("task.mutation", {
56688
+ attributes: { "task.id": payload.taskId }
56689
+ });
56690
+ span.addEvent("task.deleted", {
56691
+ "task.id": payload.taskId
56692
+ });
56693
+ span.setStatus({ code: SpanStatusCode.OK });
56694
+ span.end();
56582
56695
  setDeleteState({ status: "success" });
56583
56696
  setIsDeleteModalOpen(false);
56584
56697
  setTimeout(() => {
@@ -56609,7 +56722,18 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56609
56722
  });
56610
56723
  };
56611
56724
  }, [events2, selectedTask == null ? void 0 : selectedTask.id]);
56612
- const handleBack = () => {
56725
+ const handleBack = useCallback(() => {
56726
+ if (selectedTask) {
56727
+ const tracer = getTracer();
56728
+ const span = tracer.startSpan("detail.interaction", {
56729
+ attributes: { "task.id": selectedTask.id }
56730
+ });
56731
+ span.addEvent("task.deselected", {
56732
+ "task.id": selectedTask.id
56733
+ });
56734
+ span.setStatus({ code: SpanStatusCode.OK });
56735
+ span.end();
56736
+ }
56613
56737
  setSelectedTask(null);
56614
56738
  setDeleteState({ status: "idle" });
56615
56739
  setIsDeleteModalOpen(false);
@@ -56621,7 +56745,7 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56621
56745
  payload: {}
56622
56746
  });
56623
56747
  }
56624
- };
56748
+ }, [selectedTask, events2]);
56625
56749
  if (!selectedTask) {
56626
56750
  return /* @__PURE__ */ jsxs(
56627
56751
  "div",
@@ -56689,121 +56813,125 @@ const TaskDetailPanel = ({ context: context2, events: events2, config }) => {
56689
56813
  {
56690
56814
  style: {
56691
56815
  flexShrink: 0,
56692
- padding: "16px 20px",
56816
+ height: "40px",
56817
+ display: "flex",
56818
+ alignItems: "center",
56819
+ justifyContent: "space-between",
56820
+ padding: "0 12px",
56693
56821
  borderBottom: `1px solid ${theme2.colors.border}`,
56694
56822
  backgroundColor: theme2.colors.backgroundSecondary
56695
56823
  },
56696
56824
  children: [
56697
- /* @__PURE__ */ jsxs(
56698
- "div",
56699
- {
56700
- style: {
56701
- display: "flex",
56702
- alignItems: "center",
56703
- justifyContent: "space-between",
56704
- marginBottom: "12px"
56705
- },
56706
- children: [
56707
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
56708
- /* @__PURE__ */ jsx(
56709
- "span",
56710
- {
56711
- style: {
56712
- fontFamily: theme2.fonts.monospace,
56713
- fontSize: theme2.fontSizes[0],
56714
- fontWeight: theme2.fontWeights.medium,
56715
- color: theme2.colors.textMuted
56716
- },
56717
- children: selectedTask.id
56718
- }
56719
- ),
56720
- selectedTask.priority && /* @__PURE__ */ jsxs("span", { style: getPriorityStyles(theme2, selectedTask.priority), children: [
56721
- "Priority: ",
56722
- selectedTask.priority
56723
- ] }),
56724
- /* @__PURE__ */ jsx(StatusBadge, { status: selectedTask.status })
56725
- ] }),
56726
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
56727
- deleteState.status === "idle" && /* @__PURE__ */ jsx(
56728
- "button",
56729
- {
56730
- onClick: () => setIsDeleteModalOpen(true),
56731
- style: {
56732
- display: "flex",
56733
- alignItems: "center",
56734
- justifyContent: "center",
56735
- width: "32px",
56736
- height: "32px",
56737
- border: `1px solid ${theme2.colors.error}`,
56738
- borderRadius: theme2.radii[1],
56739
- background: "transparent",
56740
- cursor: "pointer",
56741
- color: theme2.colors.error,
56742
- transition: "all 0.2s ease"
56743
- },
56744
- onMouseEnter: (e) => {
56745
- e.currentTarget.style.background = theme2.colors.error;
56746
- e.currentTarget.style.color = theme2.colors.background;
56747
- },
56748
- onMouseLeave: (e) => {
56749
- e.currentTarget.style.background = "transparent";
56750
- e.currentTarget.style.color = theme2.colors.error;
56751
- },
56752
- title: "Delete task",
56753
- children: /* @__PURE__ */ jsx(Trash2, { size: 16 })
56754
- }
56755
- ),
56756
- deleteState.status === "success" && /* @__PURE__ */ jsx(
56757
- "div",
56758
- {
56759
- style: {
56760
- display: "flex",
56761
- alignItems: "center",
56762
- justifyContent: "center",
56763
- width: "32px",
56764
- height: "32px",
56765
- border: `1px solid ${theme2.colors.success}`,
56766
- borderRadius: theme2.radii[1],
56767
- background: `${theme2.colors.success}15`,
56768
- color: theme2.colors.success
56769
- },
56770
- title: "Task deleted",
56771
- children: /* @__PURE__ */ jsx(CircleCheckBig, { size: 16 })
56772
- }
56773
- ),
56774
- /* @__PURE__ */ jsx(
56775
- "button",
56776
- {
56777
- onClick: handleBack,
56778
- style: {
56779
- display: "flex",
56780
- alignItems: "center",
56781
- justifyContent: "center",
56782
- width: "32px",
56783
- height: "32px",
56784
- border: `1px solid ${theme2.colors.border}`,
56785
- borderRadius: theme2.radii[1],
56786
- background: theme2.colors.surface,
56787
- cursor: "pointer",
56788
- color: theme2.colors.textSecondary,
56789
- transition: "all 0.2s ease"
56790
- },
56791
- onMouseEnter: (e) => {
56792
- e.currentTarget.style.background = theme2.colors.backgroundSecondary;
56793
- e.currentTarget.style.color = theme2.colors.text;
56794
- },
56795
- onMouseLeave: (e) => {
56796
- e.currentTarget.style.background = theme2.colors.surface;
56797
- e.currentTarget.style.color = theme2.colors.textSecondary;
56798
- },
56799
- title: "Close",
56800
- children: /* @__PURE__ */ jsx(X, { size: 16 })
56801
- }
56802
- )
56803
- ] })
56804
- ]
56805
- }
56806
- ),
56825
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
56826
+ /* @__PURE__ */ jsx(
56827
+ "span",
56828
+ {
56829
+ style: {
56830
+ fontFamily: theme2.fonts.monospace,
56831
+ fontSize: theme2.fontSizes[0],
56832
+ fontWeight: theme2.fontWeights.medium,
56833
+ color: theme2.colors.textMuted
56834
+ },
56835
+ children: selectedTask.id
56836
+ }
56837
+ ),
56838
+ /* @__PURE__ */ jsx(StatusBadge, { status: selectedTask.status }),
56839
+ selectedTask.priority && /* @__PURE__ */ jsxs("span", { style: getPriorityStyles(theme2, selectedTask.priority), children: [
56840
+ "Priority: ",
56841
+ selectedTask.priority
56842
+ ] })
56843
+ ] }),
56844
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
56845
+ deleteState.status === "idle" && /* @__PURE__ */ jsx(
56846
+ "button",
56847
+ {
56848
+ onClick: handleOpenDeleteModal,
56849
+ style: {
56850
+ display: "flex",
56851
+ alignItems: "center",
56852
+ justifyContent: "center",
56853
+ width: "28px",
56854
+ height: "28px",
56855
+ border: `1px solid ${theme2.colors.error}`,
56856
+ borderRadius: theme2.radii[1],
56857
+ background: "transparent",
56858
+ cursor: "pointer",
56859
+ color: theme2.colors.error,
56860
+ transition: "all 0.2s ease"
56861
+ },
56862
+ onMouseEnter: (e) => {
56863
+ e.currentTarget.style.background = theme2.colors.error;
56864
+ e.currentTarget.style.color = theme2.colors.background;
56865
+ },
56866
+ onMouseLeave: (e) => {
56867
+ e.currentTarget.style.background = "transparent";
56868
+ e.currentTarget.style.color = theme2.colors.error;
56869
+ },
56870
+ title: "Delete task",
56871
+ children: /* @__PURE__ */ jsx(Trash2, { size: 14 })
56872
+ }
56873
+ ),
56874
+ deleteState.status === "success" && /* @__PURE__ */ jsx(
56875
+ "div",
56876
+ {
56877
+ style: {
56878
+ display: "flex",
56879
+ alignItems: "center",
56880
+ justifyContent: "center",
56881
+ width: "28px",
56882
+ height: "28px",
56883
+ border: `1px solid ${theme2.colors.success}`,
56884
+ borderRadius: theme2.radii[1],
56885
+ background: `${theme2.colors.success}15`,
56886
+ color: theme2.colors.success
56887
+ },
56888
+ title: "Task deleted",
56889
+ children: /* @__PURE__ */ jsx(CircleCheckBig, { size: 14 })
56890
+ }
56891
+ ),
56892
+ /* @__PURE__ */ jsx(
56893
+ "button",
56894
+ {
56895
+ onClick: handleBack,
56896
+ style: {
56897
+ display: "flex",
56898
+ alignItems: "center",
56899
+ justifyContent: "center",
56900
+ width: "28px",
56901
+ height: "28px",
56902
+ border: `1px solid ${theme2.colors.border}`,
56903
+ borderRadius: theme2.radii[1],
56904
+ background: theme2.colors.surface,
56905
+ cursor: "pointer",
56906
+ color: theme2.colors.textSecondary,
56907
+ transition: "all 0.2s ease"
56908
+ },
56909
+ onMouseEnter: (e) => {
56910
+ e.currentTarget.style.background = theme2.colors.backgroundSecondary;
56911
+ e.currentTarget.style.color = theme2.colors.text;
56912
+ },
56913
+ onMouseLeave: (e) => {
56914
+ e.currentTarget.style.background = theme2.colors.surface;
56915
+ e.currentTarget.style.color = theme2.colors.textSecondary;
56916
+ },
56917
+ title: "Close",
56918
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
56919
+ }
56920
+ )
56921
+ ] })
56922
+ ]
56923
+ }
56924
+ ),
56925
+ /* @__PURE__ */ jsxs(
56926
+ "div",
56927
+ {
56928
+ style: {
56929
+ flexShrink: 0,
56930
+ padding: "12px 16px",
56931
+ borderBottom: `1px solid ${theme2.colors.border}`,
56932
+ backgroundColor: theme2.colors.background
56933
+ },
56934
+ children: [
56807
56935
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
56808
56936
  hasClaudeWorkflow && claudeAssignment.status === "idle" && !getGitHubIssueFromRefs(selectedTask.references) && /* @__PURE__ */ jsxs(
56809
56937
  "button",