@tutti-os/workspace-issue-manager 0.0.3 → 0.0.4

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.
@@ -2577,54 +2577,61 @@ function IssueManagerIssuePane({
2577
2577
  const [deleteBusy, setDeleteBusy] = useState5(false);
2578
2578
  if (isCreatingIssue || isEditingIssue) {
2579
2579
  return /* @__PURE__ */ jsxs6("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: [
2580
- /* @__PURE__ */ jsx7(ScrollArea2, { className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100 [&_[data-slot=scroll-area-viewport]]:overscroll-contain", children: /* @__PURE__ */ jsx7("div", { className: "flex min-h-full flex-col gap-[14px] px-7 py-8", children: /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-3", children: [
2581
- /* @__PURE__ */ jsx7(
2582
- "div",
2583
- {
2584
- className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
2585
- children: /* @__PURE__ */ jsx7("h2", { className: "m-0 text-[15px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: isCreatingIssue ? copy.t("actions.createIssue") : copy.t("actions.editIssue") })
2586
- }
2587
- ),
2588
- /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
2589
- /* @__PURE__ */ jsxs6(
2590
- "label",
2591
- {
2592
- className: `flex w-full min-w-0 flex-col gap-2 text-[13px] font-semibold text-[var(--text-secondary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
2593
- children: [
2594
- /* @__PURE__ */ jsx7("span", { className: "leading-5", children: copy.t("labels.title") }),
2595
- /* @__PURE__ */ jsx7(
2596
- IssueManagerDraftTitleInput,
2597
- {
2598
- placeholder: copy.t("composer.issueTitlePlaceholder"),
2599
- value: controller.issueDraft.title,
2600
- onChange: controller.setIssueTitle
2601
- }
2602
- )
2603
- ]
2604
- }
2605
- ),
2606
- /* @__PURE__ */ jsxs6(
2607
- "div",
2608
- {
2609
- className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-[13px] font-semibold text-[var(--text-secondary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
2610
- children: [
2611
- /* @__PURE__ */ jsx7("span", { className: "leading-5", children: copy.t("labels.content") }),
2612
- /* @__PURE__ */ jsx7(
2613
- IssueManagerRichTextTextarea,
2614
- {
2615
- controller,
2616
- surface: "issue",
2617
- textareaClassName: "min-h-[180px] resize-none",
2618
- placeholder: copy.t("composer.issueContentPlaceholder"),
2619
- value: controller.issueDraft.content,
2620
- onChange: controller.setIssueContent
2621
- }
2622
- )
2623
- ]
2624
- }
2625
- )
2626
- ] })
2627
- ] }) }) }),
2580
+ /* @__PURE__ */ jsx7(
2581
+ ScrollArea2,
2582
+ {
2583
+ scrollbarMode: "native",
2584
+ className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100 [&_[data-slot=scroll-area-viewport]]:overscroll-contain",
2585
+ children: /* @__PURE__ */ jsx7("div", { className: "flex min-h-full flex-col gap-[14px] px-7 py-8", children: /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-3", children: [
2586
+ /* @__PURE__ */ jsx7(
2587
+ "div",
2588
+ {
2589
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
2590
+ children: /* @__PURE__ */ jsx7("h2", { className: "m-0 text-[15px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: isCreatingIssue ? copy.t("actions.createIssue") : copy.t("actions.editIssue") })
2591
+ }
2592
+ ),
2593
+ /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
2594
+ /* @__PURE__ */ jsxs6(
2595
+ "label",
2596
+ {
2597
+ className: `flex w-full min-w-0 flex-col gap-2 text-[13px] font-semibold text-[var(--text-secondary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
2598
+ children: [
2599
+ /* @__PURE__ */ jsx7("span", { className: "leading-5", children: copy.t("labels.title") }),
2600
+ /* @__PURE__ */ jsx7(
2601
+ IssueManagerDraftTitleInput,
2602
+ {
2603
+ placeholder: copy.t("composer.issueTitlePlaceholder"),
2604
+ value: controller.issueDraft.title,
2605
+ onChange: controller.setIssueTitle
2606
+ }
2607
+ )
2608
+ ]
2609
+ }
2610
+ ),
2611
+ /* @__PURE__ */ jsxs6(
2612
+ "div",
2613
+ {
2614
+ className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-[13px] font-semibold text-[var(--text-secondary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
2615
+ children: [
2616
+ /* @__PURE__ */ jsx7("span", { className: "leading-5", children: copy.t("labels.content") }),
2617
+ /* @__PURE__ */ jsx7(
2618
+ IssueManagerRichTextTextarea,
2619
+ {
2620
+ controller,
2621
+ surface: "issue",
2622
+ textareaClassName: "min-h-[180px] resize-none",
2623
+ placeholder: copy.t("composer.issueContentPlaceholder"),
2624
+ value: controller.issueDraft.content,
2625
+ onChange: controller.setIssueContent
2626
+ }
2627
+ )
2628
+ ]
2629
+ }
2630
+ )
2631
+ ] })
2632
+ ] }) })
2633
+ }
2634
+ ),
2628
2635
  /* @__PURE__ */ jsx7(
2629
2636
  "div",
2630
2637
  {
@@ -2658,127 +2665,134 @@ function IssueManagerIssuePane({
2658
2665
  if (!selectedIssue) {
2659
2666
  return /* @__PURE__ */ jsx7("div", { className: "h-full min-h-0" });
2660
2667
  }
2661
- return /* @__PURE__ */ jsx7("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: /* @__PURE__ */ jsx7(ScrollArea2, { className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100 [&_[data-slot=scroll-area-viewport]]:overscroll-contain", children: /* @__PURE__ */ jsx7("div", { className: "px-8 py-7", children: controller.issueDetail.isLoading && controller.issueDetail.value === null ? /* @__PURE__ */ jsx7(IssueManagerPaneLoadingState, {}) : /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-9", children: [
2662
- /* @__PURE__ */ jsxs6("header", { className: "grid gap-3", children: [
2663
- /* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between gap-6", children: [
2664
- /* @__PURE__ */ jsx7(IssueManagerTitleTooltip, { title: selectedIssue.title, children: /* @__PURE__ */ jsx7("h2", { className: "line-clamp-2 min-w-0 flex-1 whitespace-normal text-[15px] font-semibold leading-6 text-[var(--text-primary)] [overflow-wrap:anywhere]", children: selectedIssue.title }) }),
2665
- /* @__PURE__ */ jsxs6("div", { className: "flex shrink-0 items-center gap-2", children: [
2666
- /* @__PURE__ */ jsx7(
2667
- Button4,
2668
- {
2669
- type: "button",
2670
- variant: "ghost",
2671
- onClick: () => controller.setIssueEditorMode("edit"),
2672
- children: copy.t("actions.edit")
2673
- }
2674
- ),
2675
- /* @__PURE__ */ jsx7(
2676
- Button4,
2677
- {
2678
- className: "text-[var(--state-danger)] hover:bg-[var(--on-danger)] hover:text-[var(--state-danger)]",
2679
- type: "button",
2680
- variant: "ghost",
2681
- onClick: () => setDeleteDialogOpen(true),
2682
- children: copy.t("actions.delete")
2683
- }
2684
- )
2685
- ] })
2686
- ] }),
2687
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-2 text-[11px] font-normal leading-[1.3] text-[var(--text-secondary)]", children: [
2668
+ return /* @__PURE__ */ jsx7("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: /* @__PURE__ */ jsx7(
2669
+ ScrollArea2,
2670
+ {
2671
+ scrollbarMode: "native",
2672
+ className: "min-h-0 flex-1 [&_[data-orientation=vertical][data-slot=scroll-area-scrollbar]]:opacity-100 [&_[data-slot=scroll-area-viewport]]:overscroll-contain",
2673
+ children: /* @__PURE__ */ jsx7("div", { className: "px-8 py-7", children: controller.issueDetail.isLoading && controller.issueDetail.value === null ? /* @__PURE__ */ jsx7(IssueManagerPaneLoadingState, {}) : /* @__PURE__ */ jsxs6("div", { className: "flex w-full min-w-0 flex-col gap-9", children: [
2674
+ /* @__PURE__ */ jsxs6("header", { className: "grid gap-3", children: [
2675
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between gap-6", children: [
2676
+ /* @__PURE__ */ jsx7(IssueManagerTitleTooltip, { title: selectedIssue.title, children: /* @__PURE__ */ jsx7("h2", { className: "line-clamp-2 min-w-0 flex-1 whitespace-normal text-[15px] font-semibold leading-6 text-[var(--text-primary)] [overflow-wrap:anywhere]", children: selectedIssue.title }) }),
2677
+ /* @__PURE__ */ jsxs6("div", { className: "flex shrink-0 items-center gap-2", children: [
2678
+ /* @__PURE__ */ jsx7(
2679
+ Button4,
2680
+ {
2681
+ type: "button",
2682
+ variant: "ghost",
2683
+ onClick: () => controller.setIssueEditorMode("edit"),
2684
+ children: copy.t("actions.edit")
2685
+ }
2686
+ ),
2687
+ /* @__PURE__ */ jsx7(
2688
+ Button4,
2689
+ {
2690
+ className: "text-[var(--state-danger)] hover:bg-[var(--on-danger)] hover:text-[var(--state-danger)]",
2691
+ type: "button",
2692
+ variant: "ghost",
2693
+ onClick: () => setDeleteDialogOpen(true),
2694
+ children: copy.t("actions.delete")
2695
+ }
2696
+ )
2697
+ ] })
2698
+ ] }),
2699
+ /* @__PURE__ */ jsxs6("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-2 text-[11px] font-normal leading-[1.3] text-[var(--text-secondary)]", children: [
2700
+ /* @__PURE__ */ jsx7(
2701
+ Badge2,
2702
+ {
2703
+ variant: issueManagerStatusBadgeVariant(
2704
+ selectedIssue.status
2705
+ ),
2706
+ children: resolveIssueManagerStatusLabel(copy, selectedIssue.status)
2707
+ }
2708
+ ),
2709
+ /* @__PURE__ */ jsx7(
2710
+ "span",
2711
+ {
2712
+ "aria-hidden": "true",
2713
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2714
+ }
2715
+ ),
2716
+ /* @__PURE__ */ jsxs6("span", { className: "text-[11px] font-normal leading-[1.3]", children: [
2717
+ copy.t("labels.creator"),
2718
+ " ",
2719
+ resolveIssueManagerCreatorLabel(selectedIssue)
2720
+ ] }),
2721
+ /* @__PURE__ */ jsx7(
2722
+ "span",
2723
+ {
2724
+ "aria-hidden": "true",
2725
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2726
+ }
2727
+ ),
2728
+ /* @__PURE__ */ jsxs6("span", { className: "text-[11px] font-normal leading-[1.3]", children: [
2729
+ copy.t("labels.createdAt"),
2730
+ " ",
2731
+ formatIssueManagerTimestamp(selectedIssue.createdAtUnix) || "-"
2732
+ ] })
2733
+ ] })
2734
+ ] }),
2688
2735
  /* @__PURE__ */ jsx7(
2689
- Badge2,
2736
+ ConfirmationDialog,
2690
2737
  {
2691
- variant: issueManagerStatusBadgeVariant(
2692
- selectedIssue.status
2693
- ),
2694
- children: resolveIssueManagerStatusLabel(copy, selectedIssue.status)
2738
+ cancelLabel: copy.t("actions.cancel"),
2739
+ confirmBusy: deleteBusy,
2740
+ confirmLabel: copy.t("actions.delete"),
2741
+ description: selectedIssue.title,
2742
+ open: deleteDialogOpen,
2743
+ title: copy.t("confirmations.deleteIssue"),
2744
+ tone: "destructive",
2745
+ onConfirm: () => {
2746
+ setDeleteBusy(true);
2747
+ void controller.deleteIssue({ skipConfirmation: true }).finally(() => {
2748
+ setDeleteBusy(false);
2749
+ setDeleteDialogOpen(false);
2750
+ });
2751
+ },
2752
+ onOpenChange: setDeleteDialogOpen
2695
2753
  }
2696
2754
  ),
2697
2755
  /* @__PURE__ */ jsx7(
2698
- "span",
2756
+ IssueManagerDescriptionSection,
2699
2757
  {
2700
- "aria-hidden": "true",
2701
- className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2758
+ content: issueContent,
2759
+ emptyLabel: copy.t("messages.issueContentEmpty"),
2760
+ label: copy.t("labels.description"),
2761
+ onOpen: controller.openReference,
2762
+ variant: "plain"
2702
2763
  }
2703
2764
  ),
2704
- /* @__PURE__ */ jsxs6("span", { className: "text-[11px] font-normal leading-[1.3]", children: [
2705
- copy.t("labels.creator"),
2706
- " ",
2707
- resolveIssueManagerCreatorLabel(selectedIssue)
2708
- ] }),
2709
2765
  /* @__PURE__ */ jsx7(
2710
- "span",
2766
+ IssueManagerLatestRunStatusSection,
2711
2767
  {
2712
- "aria-hidden": "true",
2713
- className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2768
+ copy,
2769
+ latestRun,
2770
+ onOpenAgentSession: controller.canOpenAgentSessions ? controller.openAgentSession : void 0,
2771
+ renderLatestRunStatus,
2772
+ title: selectedTask?.title ?? selectedIssue.title
2714
2773
  }
2715
2774
  ),
2716
- /* @__PURE__ */ jsxs6("span", { className: "text-[11px] font-normal leading-[1.3]", children: [
2717
- copy.t("labels.createdAt"),
2718
- " ",
2719
- formatIssueManagerTimestamp(selectedIssue.createdAtUnix) || "-"
2720
- ] })
2721
- ] })
2722
- ] }),
2723
- /* @__PURE__ */ jsx7(
2724
- ConfirmationDialog,
2725
- {
2726
- cancelLabel: copy.t("actions.cancel"),
2727
- confirmBusy: deleteBusy,
2728
- confirmLabel: copy.t("actions.delete"),
2729
- description: selectedIssue.title,
2730
- open: deleteDialogOpen,
2731
- title: copy.t("confirmations.deleteIssue"),
2732
- tone: "destructive",
2733
- onConfirm: () => {
2734
- setDeleteBusy(true);
2735
- void controller.deleteIssue({ skipConfirmation: true }).finally(() => {
2736
- setDeleteBusy(false);
2737
- setDeleteDialogOpen(false);
2738
- });
2739
- },
2740
- onOpenChange: setDeleteDialogOpen
2741
- }
2742
- ),
2743
- /* @__PURE__ */ jsx7(
2744
- IssueManagerDescriptionSection,
2745
- {
2746
- content: issueContent,
2747
- emptyLabel: copy.t("messages.issueContentEmpty"),
2748
- label: copy.t("labels.description"),
2749
- onOpen: controller.openReference,
2750
- variant: "plain"
2751
- }
2752
- ),
2753
- /* @__PURE__ */ jsx7(
2754
- IssueManagerLatestRunStatusSection,
2755
- {
2756
- copy,
2757
- latestRun,
2758
- onOpenAgentSession: controller.canOpenAgentSessions ? controller.openAgentSession : void 0,
2759
- renderLatestRunStatus,
2760
- title: selectedTask?.title ?? selectedIssue.title
2761
- }
2762
- ),
2763
- /* @__PURE__ */ jsx7(
2764
- IssueManagerOutputSection,
2765
- {
2766
- copy,
2767
- outputs: latestOutputs,
2768
- onOpen: controller.openReference
2769
- }
2770
- ),
2771
- /* @__PURE__ */ jsx7(
2772
- IssueManagerSubtaskSection,
2773
- {
2774
- copy,
2775
- onCreate: controller.createTaskDraft,
2776
- onSelectTask: controller.selectTask,
2777
- selectedTaskId: selectedTask?.taskId ?? null,
2778
- tasks
2779
- }
2780
- )
2781
- ] }) }) }) });
2775
+ /* @__PURE__ */ jsx7(
2776
+ IssueManagerOutputSection,
2777
+ {
2778
+ copy,
2779
+ outputs: latestOutputs,
2780
+ onOpen: controller.openReference
2781
+ }
2782
+ ),
2783
+ /* @__PURE__ */ jsx7(
2784
+ IssueManagerSubtaskSection,
2785
+ {
2786
+ copy,
2787
+ onCreate: controller.createTaskDraft,
2788
+ onSelectTask: controller.selectTask,
2789
+ selectedTaskId: selectedTask?.taskId ?? null,
2790
+ tasks
2791
+ }
2792
+ )
2793
+ ] }) })
2794
+ }
2795
+ ) });
2782
2796
  }
2783
2797
 
2784
2798
  // src/ui/internal/shell/IssueManagerBottomBar.tsx
@@ -3263,6 +3277,7 @@ function IssueManagerSidebarBody({
3263
3277
  return /* @__PURE__ */ jsx11(
3264
3278
  ScrollArea3,
3265
3279
  {
3280
+ scrollbarMode: "native",
3266
3281
  className: cn6("min-h-0", isNarrowLayout ? "flex-none" : "h-full flex-1"),
3267
3282
  children: /* @__PURE__ */ jsx11(
3268
3283
  "div",
@@ -4113,24 +4128,31 @@ function IssueManagerTaskDrawer({
4113
4128
  view
4114
4129
  }
4115
4130
  ),
4116
- /* @__PURE__ */ jsx15(ScrollArea4, { className: "min-h-0 flex-1 [&_[data-slot=scroll-area-viewport]]:overscroll-contain", children: /* @__PURE__ */ jsx15(
4117
- "div",
4131
+ /* @__PURE__ */ jsx15(
4132
+ ScrollArea4,
4118
4133
  {
4119
- className: cn8(
4120
- "flex flex-col",
4121
- view.bodyKind === "edit" ? "gap-[14px] px-6 py-8" : "gap-9 px-6 py-7"
4122
- ),
4134
+ scrollbarMode: "native",
4135
+ className: "min-h-0 flex-1 [&_[data-slot=scroll-area-viewport]]:overscroll-contain",
4123
4136
  children: /* @__PURE__ */ jsx15(
4124
- IssueManagerTaskDrawerBody,
4137
+ "div",
4125
4138
  {
4126
- controller,
4127
- renderLatestRunStatus,
4128
- taskContent,
4129
- view
4139
+ className: cn8(
4140
+ "flex flex-col",
4141
+ view.bodyKind === "edit" ? "gap-[14px] px-6 py-8" : "gap-9 px-6 py-7"
4142
+ ),
4143
+ children: /* @__PURE__ */ jsx15(
4144
+ IssueManagerTaskDrawerBody,
4145
+ {
4146
+ controller,
4147
+ renderLatestRunStatus,
4148
+ taskContent,
4149
+ view
4150
+ }
4151
+ )
4130
4152
  }
4131
4153
  )
4132
4154
  }
4133
- ) }),
4155
+ ),
4134
4156
  /* @__PURE__ */ jsx15(
4135
4157
  IssueManagerTaskDrawerFooter,
4136
4158
  {
@@ -5022,4 +5044,4 @@ export {
5022
5044
  IssueManagerNode,
5023
5045
  IssueManagerNodeHeader
5024
5046
  };
5025
- //# sourceMappingURL=chunk-CHQTHPRL.js.map
5047
+ //# sourceMappingURL=chunk-RJX54QWL.js.map