@tutti-os/workspace-issue-manager 0.0.41 → 0.0.43
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.
|
@@ -101,6 +101,9 @@ var issueManagerTopicDeleteHub = createIssueManagerKeyedEventHub({
|
|
|
101
101
|
var issueManagerTopicUpdateHub = createIssueManagerKeyedEventHub({
|
|
102
102
|
getKey: issueManagerNodeScopeKey
|
|
103
103
|
});
|
|
104
|
+
var issueManagerIssueCreateRequestHub = createIssueManagerKeyedEventHub({
|
|
105
|
+
getKey: issueManagerNodeScopeKey
|
|
106
|
+
});
|
|
104
107
|
function resolveIssueManagerTopicHeaderState(input) {
|
|
105
108
|
return issueManagerTopicHeaderStateHub.get(issueManagerNodeScopeKey(input)) ?? {
|
|
106
109
|
activeTopicId: input.activeTopicId,
|
|
@@ -137,6 +140,9 @@ function dispatchIssueManagerTopicDelete(input) {
|
|
|
137
140
|
function dispatchIssueManagerTopicUpdate(input) {
|
|
138
141
|
issueManagerTopicUpdateHub.publish(input);
|
|
139
142
|
}
|
|
143
|
+
function dispatchIssueManagerIssueCreateRequest(input) {
|
|
144
|
+
issueManagerIssueCreateRequestHub.publish(input);
|
|
145
|
+
}
|
|
140
146
|
function useIssueManagerTaskListCollapsedSync(input) {
|
|
141
147
|
const onCollapsedChange = useEffectEvent(input.onCollapsedChange);
|
|
142
148
|
useEffect(() => {
|
|
@@ -231,6 +237,18 @@ function useIssueManagerTopicHeaderCommandSync(input) {
|
|
|
231
237
|
onUpdateTopic
|
|
232
238
|
]);
|
|
233
239
|
}
|
|
240
|
+
function useIssueManagerIssueCreateRequestSync(input) {
|
|
241
|
+
const onCreateIssue = useEffectEvent(input.onCreateIssue);
|
|
242
|
+
useEffect(() => {
|
|
243
|
+
const handleCreateIssueRequest = () => {
|
|
244
|
+
onCreateIssue();
|
|
245
|
+
};
|
|
246
|
+
return issueManagerIssueCreateRequestHub.subscribe(
|
|
247
|
+
issueManagerNodeScopeKey(input),
|
|
248
|
+
handleCreateIssueRequest
|
|
249
|
+
);
|
|
250
|
+
}, [input.nodeId, input.workspaceId, onCreateIssue]);
|
|
251
|
+
}
|
|
234
252
|
function useIssueManagerNodeHeaderView(input) {
|
|
235
253
|
const [manualCollapsed, setManualCollapsed] = useState(
|
|
236
254
|
input.isSidebarCollapsed
|
|
@@ -2277,7 +2295,16 @@ import {
|
|
|
2277
2295
|
useEffect as useEffect10,
|
|
2278
2296
|
useRef as useRef8
|
|
2279
2297
|
} from "react";
|
|
2280
|
-
import {
|
|
2298
|
+
import {
|
|
2299
|
+
Button as Button13,
|
|
2300
|
+
FileCreateIcon as FileCreateIcon6,
|
|
2301
|
+
PanelIcon,
|
|
2302
|
+
Tooltip as Tooltip2,
|
|
2303
|
+
TooltipContent as TooltipContent2,
|
|
2304
|
+
TooltipProvider,
|
|
2305
|
+
TooltipTrigger as TooltipTrigger2,
|
|
2306
|
+
cn as cn13
|
|
2307
|
+
} from "@tutti-os/ui-system";
|
|
2281
2308
|
import {
|
|
2282
2309
|
ReferenceSourcePicker,
|
|
2283
2310
|
WorkspaceFileReferencePicker
|
|
@@ -2289,7 +2316,7 @@ import {
|
|
|
2289
2316
|
useRef as useRef7,
|
|
2290
2317
|
useState as useState10
|
|
2291
2318
|
} from "react";
|
|
2292
|
-
import { Button as Button11, FileCreateIcon as
|
|
2319
|
+
import { Button as Button11, FileCreateIcon as FileCreateIcon4, cn as cn11 } from "@tutti-os/ui-system";
|
|
2293
2320
|
|
|
2294
2321
|
// src/ui/internal/shell/IssueManagerPanels.tsx
|
|
2295
2322
|
import { useState as useState7 } from "react";
|
|
@@ -4241,12 +4268,12 @@ import {
|
|
|
4241
4268
|
Badge as Badge4,
|
|
4242
4269
|
Button as Button8,
|
|
4243
4270
|
CloseIcon,
|
|
4271
|
+
FileCreateIcon as FileCreateIcon3,
|
|
4244
4272
|
Input as Input2,
|
|
4245
4273
|
ScrollArea as ScrollArea3,
|
|
4246
4274
|
UnderlineTabs,
|
|
4247
4275
|
cn as cn8
|
|
4248
4276
|
} from "@tutti-os/ui-system";
|
|
4249
|
-
import { CreateChatIcon } from "@tutti-os/ui-system/icons";
|
|
4250
4277
|
|
|
4251
4278
|
// src/ui/internal/shell/IssueManagerShellState.ts
|
|
4252
4279
|
var issueManagerStatusFilters = [
|
|
@@ -4398,7 +4425,7 @@ function IssueManagerSidebarHeader({
|
|
|
4398
4425
|
variant: "secondary",
|
|
4399
4426
|
onClick: onCreateIssue,
|
|
4400
4427
|
children: [
|
|
4401
|
-
/* @__PURE__ */ jsx13(
|
|
4428
|
+
/* @__PURE__ */ jsx13(FileCreateIcon3, { "aria-hidden": "true" }),
|
|
4402
4429
|
/* @__PURE__ */ jsx13("span", { children: copy.t("actions.createIssue") })
|
|
4403
4430
|
]
|
|
4404
4431
|
}
|
|
@@ -5937,7 +5964,7 @@ function IssueManagerShellEmptyState({
|
|
|
5937
5964
|
type: "button",
|
|
5938
5965
|
onClick: () => controller.setIssueEditorMode("create"),
|
|
5939
5966
|
children: [
|
|
5940
|
-
/* @__PURE__ */ jsx18(
|
|
5967
|
+
/* @__PURE__ */ jsx18(FileCreateIcon4, { size: 16 }),
|
|
5941
5968
|
controller.copy.t("actions.createIssue")
|
|
5942
5969
|
]
|
|
5943
5970
|
}
|
|
@@ -5965,7 +5992,7 @@ import {
|
|
|
5965
5992
|
DropdownMenuSeparator,
|
|
5966
5993
|
DropdownMenuTrigger as DropdownMenuTrigger2,
|
|
5967
5994
|
EditIcon,
|
|
5968
|
-
FileCreateIcon as
|
|
5995
|
+
FileCreateIcon as FileCreateIcon5,
|
|
5969
5996
|
Input as Input3,
|
|
5970
5997
|
MoreHorizontalIcon,
|
|
5971
5998
|
PinFilledIcon,
|
|
@@ -6142,7 +6169,7 @@ function IssueManagerTopicSelector({
|
|
|
6142
6169
|
});
|
|
6143
6170
|
},
|
|
6144
6171
|
children: [
|
|
6145
|
-
/* @__PURE__ */ jsx19(
|
|
6172
|
+
/* @__PURE__ */ jsx19(FileCreateIcon5, { className: "size-3.5" }),
|
|
6146
6173
|
/* @__PURE__ */ jsx19("span", { className: "truncate", children: copy.t("actions.createTopic") })
|
|
6147
6174
|
]
|
|
6148
6175
|
}
|
|
@@ -6367,6 +6394,13 @@ function IssueManagerNode({
|
|
|
6367
6394
|
},
|
|
6368
6395
|
workspaceId
|
|
6369
6396
|
});
|
|
6397
|
+
useIssueManagerIssueCreateRequestSync({
|
|
6398
|
+
nodeId,
|
|
6399
|
+
onCreateIssue: () => {
|
|
6400
|
+
controller.setIssueEditorMode("create");
|
|
6401
|
+
},
|
|
6402
|
+
workspaceId
|
|
6403
|
+
});
|
|
6370
6404
|
return /* @__PURE__ */ jsxs18(
|
|
6371
6405
|
"section",
|
|
6372
6406
|
{
|
|
@@ -6416,7 +6450,7 @@ function IssueManagerNode({
|
|
|
6416
6450
|
var issueManagerWorkbenchDragHandleAttribute = "data-workbench-drag-handle";
|
|
6417
6451
|
var issueManagerHeaderChromeIconButtonClassName = "size-7 min-h-7 min-w-7 cursor-pointer rounded-md p-0 text-[var(--text-secondary)] hover:bg-[color-mix(in_srgb,var(--text-primary)_8%,transparent)] hover:text-[var(--text-primary)]";
|
|
6418
6452
|
var issueManagerHeaderChromeIconClassName = "size-[18px]";
|
|
6419
|
-
var issueManagerHeaderTrafficLightClassName = "size-
|
|
6453
|
+
var issueManagerHeaderTrafficLightClassName = "relative -m-1 size-5 shrink-0 cursor-pointer rounded-full border-0 bg-transparent p-0 text-[var(--text-placeholder)] opacity-95 outline-none transition-[color,filter,opacity] duration-150 ease-out before:absolute before:inset-1 before:rounded-full before:bg-current before:transition-colors before:duration-150 before:ease-out before:content-[''] hover:brightness-110 focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--background-panel)]";
|
|
6420
6454
|
function IssueManagerNodeHeader({
|
|
6421
6455
|
activeTopicId = null,
|
|
6422
6456
|
className,
|
|
@@ -6464,7 +6498,13 @@ function IssueManagerNodeHeader({
|
|
|
6464
6498
|
};
|
|
6465
6499
|
const displayModeLabel = safeDisplayMode === "fullscreen" ? copy.t("actions.restoreWindow") : copy.t("actions.maximizeWindow");
|
|
6466
6500
|
const sidebarHeaderStyle = {
|
|
6467
|
-
width: effectiveCollapsed ? "
|
|
6501
|
+
width: effectiveCollapsed ? "max-content" : "min(var(--issue-manager-sidebar-width, 280px), 100%)"
|
|
6502
|
+
};
|
|
6503
|
+
const rightHeaderDividerMaskStyle = {
|
|
6504
|
+
left: effectiveCollapsed ? "0px" : "min(var(--issue-manager-sidebar-width, 280px), 100%)"
|
|
6505
|
+
};
|
|
6506
|
+
const topicHeaderStyle = {
|
|
6507
|
+
left: effectiveCollapsed ? "50%" : "calc(min(var(--issue-manager-sidebar-width, 280px), 100%) + ((100% - min(var(--issue-manager-sidebar-width, 280px), 100%)) / 2))"
|
|
6468
6508
|
};
|
|
6469
6509
|
return /* @__PURE__ */ jsxs18(
|
|
6470
6510
|
"header",
|
|
@@ -6483,11 +6523,22 @@ function IssueManagerNodeHeader({
|
|
|
6483
6523
|
className: "absolute inset-0 cursor-grab active:cursor-grabbing"
|
|
6484
6524
|
}
|
|
6485
6525
|
),
|
|
6526
|
+
/* @__PURE__ */ jsx20(
|
|
6527
|
+
"div",
|
|
6528
|
+
{
|
|
6529
|
+
"aria-hidden": "true",
|
|
6530
|
+
className: "pointer-events-none absolute right-0 bottom-0 z-[11] h-px bg-[var(--background-panel)]",
|
|
6531
|
+
style: rightHeaderDividerMaskStyle
|
|
6532
|
+
}
|
|
6533
|
+
),
|
|
6486
6534
|
/* @__PURE__ */ jsxs18(
|
|
6487
6535
|
"div",
|
|
6488
6536
|
{
|
|
6489
6537
|
...dragHandleProps,
|
|
6490
|
-
className:
|
|
6538
|
+
className: cn13(
|
|
6539
|
+
"relative z-10 flex h-full min-w-0 cursor-grab items-center gap-2 bg-[var(--background-panel)] pr-3 pl-4 active:cursor-grabbing",
|
|
6540
|
+
!effectiveCollapsed && "border-r border-[var(--border-1)]"
|
|
6541
|
+
),
|
|
6491
6542
|
style: sidebarHeaderStyle,
|
|
6492
6543
|
children: [
|
|
6493
6544
|
/* @__PURE__ */ jsxs18(
|
|
@@ -6526,56 +6577,14 @@ function IssueManagerNodeHeader({
|
|
|
6526
6577
|
}
|
|
6527
6578
|
),
|
|
6528
6579
|
/* @__PURE__ */ jsx20("span", { className: "min-w-0 shrink truncate text-[15px] font-semibold leading-5 text-[var(--text-primary)]", children: title?.trim() || copy.t("title") }),
|
|
6529
|
-
/* @__PURE__ */ jsx20(
|
|
6530
|
-
"div",
|
|
6531
|
-
{
|
|
6532
|
-
className: "ml-auto flex min-w-0 shrink items-center",
|
|
6533
|
-
onDoubleClick: (event) => event.stopPropagation(),
|
|
6534
|
-
onPointerDown: (event) => event.stopPropagation(),
|
|
6535
|
-
children: /* @__PURE__ */ jsx20(
|
|
6536
|
-
IssueManagerTopicSelector,
|
|
6537
|
-
{
|
|
6538
|
-
activeTopicId: topicState.activeTopicId,
|
|
6539
|
-
className: "max-w-[150px] flex-none text-[var(--text-primary)]",
|
|
6540
|
-
copy,
|
|
6541
|
-
topics: topicState.topics,
|
|
6542
|
-
onCreateTopic: (input) => {
|
|
6543
|
-
dispatchIssueManagerTopicCreate({
|
|
6544
|
-
input,
|
|
6545
|
-
nodeId,
|
|
6546
|
-
workspaceId
|
|
6547
|
-
});
|
|
6548
|
-
},
|
|
6549
|
-
onDeleteTopic: (topicId) => {
|
|
6550
|
-
dispatchIssueManagerTopicDelete({
|
|
6551
|
-
nodeId,
|
|
6552
|
-
topicId,
|
|
6553
|
-
workspaceId
|
|
6554
|
-
});
|
|
6555
|
-
},
|
|
6556
|
-
onSelectTopic: (topicId) => {
|
|
6557
|
-
dispatchIssueManagerTopicSelection({
|
|
6558
|
-
nodeId,
|
|
6559
|
-
topicId,
|
|
6560
|
-
workspaceId
|
|
6561
|
-
});
|
|
6562
|
-
},
|
|
6563
|
-
onUpdateTopic: (input) => {
|
|
6564
|
-
dispatchIssueManagerTopicUpdate({
|
|
6565
|
-
input,
|
|
6566
|
-
nodeId,
|
|
6567
|
-
workspaceId
|
|
6568
|
-
});
|
|
6569
|
-
}
|
|
6570
|
-
}
|
|
6571
|
-
)
|
|
6572
|
-
}
|
|
6573
|
-
),
|
|
6574
6580
|
/* @__PURE__ */ jsx20(
|
|
6575
6581
|
Button13,
|
|
6576
6582
|
{
|
|
6577
6583
|
"aria-label": toggleLabel,
|
|
6578
|
-
className:
|
|
6584
|
+
className: cn13(
|
|
6585
|
+
!effectiveCollapsed && "ml-auto",
|
|
6586
|
+
issueManagerHeaderChromeIconButtonClassName
|
|
6587
|
+
),
|
|
6579
6588
|
"data-issue-manager-sidebar-auto-collapsed": isSidebarAutoCollapsed ? "true" : void 0,
|
|
6580
6589
|
"data-issue-manager-sidebar-collapsed": effectiveCollapsed ? "true" : void 0,
|
|
6581
6590
|
size: "icon-sm",
|
|
@@ -6590,9 +6599,84 @@ function IssueManagerNodeHeader({
|
|
|
6590
6599
|
onPointerDown: (event) => event.stopPropagation(),
|
|
6591
6600
|
children: /* @__PURE__ */ jsx20(PanelIcon, { className: issueManagerHeaderChromeIconClassName })
|
|
6592
6601
|
}
|
|
6593
|
-
)
|
|
6602
|
+
),
|
|
6603
|
+
effectiveCollapsed ? /* @__PURE__ */ jsx20(TooltipProvider, { delayDuration: 250, skipDelayDuration: 0, children: /* @__PURE__ */ jsxs18(Tooltip2, { children: [
|
|
6604
|
+
/* @__PURE__ */ jsx20(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ jsx20(
|
|
6605
|
+
Button13,
|
|
6606
|
+
{
|
|
6607
|
+
"aria-label": copy.t("actions.createIssue"),
|
|
6608
|
+
className: issueManagerHeaderChromeIconButtonClassName,
|
|
6609
|
+
size: "icon-sm",
|
|
6610
|
+
type: "button",
|
|
6611
|
+
variant: "ghost",
|
|
6612
|
+
onClick: (event) => {
|
|
6613
|
+
event.stopPropagation();
|
|
6614
|
+
dispatchIssueManagerIssueCreateRequest({
|
|
6615
|
+
nodeId,
|
|
6616
|
+
workspaceId
|
|
6617
|
+
});
|
|
6618
|
+
},
|
|
6619
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
6620
|
+
onPointerDown: (event) => event.stopPropagation(),
|
|
6621
|
+
children: /* @__PURE__ */ jsx20(FileCreateIcon6, { "aria-hidden": "true" })
|
|
6622
|
+
}
|
|
6623
|
+
) }),
|
|
6624
|
+
/* @__PURE__ */ jsx20(TooltipContent2, { side: "bottom", children: copy.t("actions.createIssue") })
|
|
6625
|
+
] }) }) : null
|
|
6594
6626
|
]
|
|
6595
6627
|
}
|
|
6628
|
+
),
|
|
6629
|
+
/* @__PURE__ */ jsx20(
|
|
6630
|
+
"div",
|
|
6631
|
+
{
|
|
6632
|
+
className: "pointer-events-none absolute inset-y-0 z-10 flex min-w-0 -translate-x-1/2 items-center justify-center px-3",
|
|
6633
|
+
style: topicHeaderStyle,
|
|
6634
|
+
children: /* @__PURE__ */ jsx20(
|
|
6635
|
+
"div",
|
|
6636
|
+
{
|
|
6637
|
+
className: "pointer-events-auto flex min-w-0 max-w-full items-center",
|
|
6638
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
6639
|
+
onPointerDown: (event) => event.stopPropagation(),
|
|
6640
|
+
children: /* @__PURE__ */ jsx20(
|
|
6641
|
+
IssueManagerTopicSelector,
|
|
6642
|
+
{
|
|
6643
|
+
activeTopicId: topicState.activeTopicId,
|
|
6644
|
+
className: "max-w-[220px] text-[var(--text-primary)]",
|
|
6645
|
+
copy,
|
|
6646
|
+
topics: topicState.topics,
|
|
6647
|
+
onCreateTopic: (input) => {
|
|
6648
|
+
dispatchIssueManagerTopicCreate({
|
|
6649
|
+
input,
|
|
6650
|
+
nodeId,
|
|
6651
|
+
workspaceId
|
|
6652
|
+
});
|
|
6653
|
+
},
|
|
6654
|
+
onDeleteTopic: (topicId) => {
|
|
6655
|
+
dispatchIssueManagerTopicDelete({
|
|
6656
|
+
nodeId,
|
|
6657
|
+
topicId,
|
|
6658
|
+
workspaceId
|
|
6659
|
+
});
|
|
6660
|
+
},
|
|
6661
|
+
onSelectTopic: (topicId) => {
|
|
6662
|
+
dispatchIssueManagerTopicSelection({
|
|
6663
|
+
nodeId,
|
|
6664
|
+
topicId,
|
|
6665
|
+
workspaceId
|
|
6666
|
+
});
|
|
6667
|
+
},
|
|
6668
|
+
onUpdateTopic: (input) => {
|
|
6669
|
+
dispatchIssueManagerTopicUpdate({
|
|
6670
|
+
input,
|
|
6671
|
+
nodeId,
|
|
6672
|
+
workspaceId
|
|
6673
|
+
});
|
|
6674
|
+
}
|
|
6675
|
+
}
|
|
6676
|
+
)
|
|
6677
|
+
}
|
|
6678
|
+
)
|
|
6679
|
+
}
|
|
6596
6680
|
)
|
|
6597
6681
|
]
|
|
6598
6682
|
}
|
|
@@ -6604,18 +6688,17 @@ function IssueManagerTrafficLightButton({
|
|
|
6604
6688
|
pressed,
|
|
6605
6689
|
tone
|
|
6606
6690
|
}) {
|
|
6607
|
-
|
|
6691
|
+
const button = /* @__PURE__ */ jsx20(
|
|
6608
6692
|
"button",
|
|
6609
6693
|
{
|
|
6610
6694
|
"aria-label": label,
|
|
6611
6695
|
"aria-pressed": pressed,
|
|
6612
6696
|
className: cn13(
|
|
6613
6697
|
issueManagerHeaderTrafficLightClassName,
|
|
6614
|
-
tone === "close" && "
|
|
6615
|
-
tone === "minimize" && "
|
|
6616
|
-
tone === "maximize" && "
|
|
6698
|
+
tone === "close" && "hover:text-[#ff5f57] focus-visible:text-[#ff5f57]",
|
|
6699
|
+
tone === "minimize" && "hover:text-[#ffbd2e] focus-visible:text-[#ffbd2e]",
|
|
6700
|
+
tone === "maximize" && "hover:text-[#28c840] focus-visible:text-[#28c840]"
|
|
6617
6701
|
),
|
|
6618
|
-
title: label,
|
|
6619
6702
|
type: "button",
|
|
6620
6703
|
onClick: (event) => {
|
|
6621
6704
|
event.stopPropagation();
|
|
@@ -6625,6 +6708,10 @@ function IssueManagerTrafficLightButton({
|
|
|
6625
6708
|
onPointerDown: (event) => event.stopPropagation()
|
|
6626
6709
|
}
|
|
6627
6710
|
);
|
|
6711
|
+
return /* @__PURE__ */ jsx20(TooltipProvider, { delayDuration: 250, skipDelayDuration: 0, children: /* @__PURE__ */ jsxs18(Tooltip2, { children: [
|
|
6712
|
+
/* @__PURE__ */ jsx20(TooltipTrigger2, { asChild: true, children: button }),
|
|
6713
|
+
/* @__PURE__ */ jsx20(TooltipContent2, { side: "bottom", children: label })
|
|
6714
|
+
] }) });
|
|
6628
6715
|
}
|
|
6629
6716
|
|
|
6630
6717
|
export {
|
|
@@ -6632,4 +6719,4 @@ export {
|
|
|
6632
6719
|
IssueManagerNode,
|
|
6633
6720
|
IssueManagerNodeHeader
|
|
6634
6721
|
};
|
|
6635
|
-
//# sourceMappingURL=chunk-
|
|
6722
|
+
//# sourceMappingURL=chunk-UVXKVWZL.js.map
|