@nextop-os/workspace-issue-manager 0.0.24 → 0.0.26

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.
@@ -25,7 +25,7 @@ import {
25
25
  toContextRefInput,
26
26
  toIssueManagerWorkspaceFileLinkInput,
27
27
  uniqueIssueManagerFileReferences
28
- } from "./chunk-ZQVG7YMT.js";
28
+ } from "./chunk-34KSO5F6.js";
29
29
  import {
30
30
  appendIssueManagerWorkspaceFileLinksToContent,
31
31
  clampIssueManagerSidebarWidth,
@@ -36,7 +36,7 @@ import {
36
36
  issueManagerSidebarMinWidth,
37
37
  normalizeIssueManagerContent,
38
38
  shouldAutoCollapseIssueManagerSidebar
39
- } from "./chunk-V75TAM27.js";
39
+ } from "./chunk-RJ6HZRQU.js";
40
40
 
41
41
  // src/ui/react/internal/shell/IssueManagerNodeState.ts
42
42
  import { useEffect, useEffectEvent, useState } from "react";
@@ -741,9 +741,9 @@ function createIssueManagerControllerActions(input) {
741
741
  selectedTaskId: null
742
742
  }));
743
743
  },
744
- async deleteIssue() {
744
+ async deleteIssue(options) {
745
745
  const selectedIssueId = nodeState.selectedIssueId;
746
- if (!selectedIssueId || !confirmIssueManagerMessage(copy.t("confirmations.deleteIssue"))) {
746
+ if (!selectedIssueId || options?.skipConfirmation !== true && !confirmIssueManagerMessage(copy.t("confirmations.deleteIssue"))) {
747
747
  return;
748
748
  }
749
749
  try {
@@ -759,10 +759,10 @@ function createIssueManagerControllerActions(input) {
759
759
  notifyError(error, "messages.issueDeleteFailed");
760
760
  }
761
761
  },
762
- async deleteTask() {
762
+ async deleteTask(options) {
763
763
  const selectedIssueId = nodeState.selectedIssueId;
764
764
  const selectedTaskId = nodeState.selectedTaskId;
765
- if (!selectedIssueId || !selectedTaskId || !confirmIssueManagerMessage(copy.t("confirmations.deleteTask"))) {
765
+ if (!selectedIssueId || !selectedTaskId || options?.skipConfirmation !== true && !confirmIssueManagerMessage(copy.t("confirmations.deleteTask"))) {
766
766
  return;
767
767
  }
768
768
  try {
@@ -1659,39 +1659,46 @@ function hasFileAdapterMethod2(fileAdapter, methodName) {
1659
1659
  }
1660
1660
 
1661
1661
  // src/ui/IssueManagerNode.tsx
1662
- import { Button as Button14, PanelIcon, cn as cn10 } from "@nextop-os/ui-system";
1662
+ import { Button as Button14, PanelIcon, cn as cn12 } from "@nextop-os/ui-system";
1663
1663
 
1664
1664
  // src/ui/internal/reference/IssueManagerReferencePicker.tsx
1665
- import { useMemo as useMemo4 } from "react";
1666
1665
  import { createPortal } from "react-dom";
1667
1666
  import {
1668
1667
  Button as Button3,
1669
1668
  Card,
1670
1669
  CardContent,
1671
- CardDescription,
1672
1670
  CardHeader,
1673
1671
  CardTitle,
1674
- CloseIcon
1672
+ CloseIcon,
1673
+ cn as cn2
1675
1674
  } from "@nextop-os/ui-system";
1676
1675
 
1677
1676
  // src/ui/internal/reference/IssueManagerReferencePickerSections.tsx
1678
- import { Badge, Button as Button2, DirectoryIcon as DirectoryIcon2, FileIcon as FileIcon2 } from "@nextop-os/ui-system";
1677
+ import {
1678
+ Badge,
1679
+ Button as Button2,
1680
+ FileIcon as FileIcon2,
1681
+ FolderFilledIcon as FolderFilledIcon2
1682
+ } from "@nextop-os/ui-system";
1679
1683
 
1680
1684
  // src/ui/internal/reference/IssueManagerReferencePickerTree.tsx
1685
+ import { useEffect as useEffect4, useState as useState3 } from "react";
1681
1686
  import {
1682
1687
  ArrowRightIcon,
1683
1688
  Button,
1684
1689
  CheckIcon,
1685
- DirectoryIcon,
1686
1690
  FileIcon,
1691
+ FolderFilledIcon,
1687
1692
  Input,
1688
- LoadingIcon,
1689
1693
  ScrollArea,
1690
1694
  SearchIcon,
1695
+ Spinner,
1691
1696
  cn
1692
1697
  } from "@nextop-os/ui-system";
1698
+ import { AddIcon as AddLinedIcon } from "@nextop-os/ui-system/icons";
1693
1699
  import { jsx, jsxs } from "react/jsx-runtime";
1694
- var issueManagerReferenceTreeIndent = 20;
1700
+ var issueManagerReferenceTreeIndent = 24;
1701
+ var issueManagerReferenceTreeCollapseDurationMs = 200;
1695
1702
  function IssueManagerReferencePickerBrowserPane({
1696
1703
  browseRootEntries,
1697
1704
  copy,
@@ -1708,9 +1715,9 @@ function IssueManagerReferencePickerBrowserPane({
1708
1715
  onToggleFolder,
1709
1716
  onToggleRef
1710
1717
  }) {
1711
- return /* @__PURE__ */ jsxs("section", { className: "flex min-h-0 flex-col border-b border-border/70 lg:border-r lg:border-b-0", children: [
1712
- /* @__PURE__ */ jsx("div", { className: "space-y-3 border-b border-border/70 px-4 py-4 sm:px-5", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
1713
- /* @__PURE__ */ jsx(SearchIcon, { className: "pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground" }),
1718
+ return /* @__PURE__ */ jsxs("section", { className: "flex min-h-0 flex-col border-b border-[var(--line-1)] lg:border-r lg:border-b-0", children: [
1719
+ /* @__PURE__ */ jsx("div", { className: "border-b border-[var(--line-1)] p-3", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
1720
+ /* @__PURE__ */ jsx(SearchIcon, { className: "pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-[var(--text-tertiary)]" }),
1714
1721
  /* @__PURE__ */ jsx(
1715
1722
  Input,
1716
1723
  {
@@ -1721,7 +1728,7 @@ function IssueManagerReferencePickerBrowserPane({
1721
1728
  }
1722
1729
  )
1723
1730
  ] }) }),
1724
- /* @__PURE__ */ jsx(ScrollArea, { className: "min-h-0 flex-1", children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 p-3", children: isLoading ? /* @__PURE__ */ jsx(IssueManagerReferencePickerFeedback, { children: /* @__PURE__ */ jsx(LoadingIcon, { className: "size-4 animate-spin" }) }) : visibleEntries.length === 0 ? /* @__PURE__ */ jsx(IssueManagerReferencePickerFeedback, { children: mode === "search" ? copy.t("referencePicker.emptySearch") : copy.t("referencePicker.emptyDirectory") }) : mode === "browse" ? /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: browseRootEntries.map((entry) => /* @__PURE__ */ jsx(
1731
+ isLoading ? /* @__PURE__ */ jsx(IssueManagerReferencePickerFeedback, { children: /* @__PURE__ */ jsx(Spinner, { className: "text-[var(--text-secondary)]", size: 16 }) }) : visibleEntries.length === 0 ? /* @__PURE__ */ jsx(IssueManagerReferencePickerFeedback, { children: mode === "search" ? copy.t("referencePicker.emptySearch") : copy.t("referencePicker.emptyDirectory") }) : /* @__PURE__ */ jsx(ScrollArea, { className: "min-h-0 flex-1", children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-[2px] p-3", children: mode === "browse" ? /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: browseRootEntries.map((entry) => /* @__PURE__ */ jsx(
1725
1732
  IssueManagerReferencePickerTreeEntry,
1726
1733
  {
1727
1734
  childDepth: 1,
@@ -1741,7 +1748,9 @@ function IssueManagerReferencePickerBrowserPane({
1741
1748
  {
1742
1749
  entry,
1743
1750
  focused: focusedPath === entry.path,
1744
- selected: selectedRefs.some((item) => item.path === entry.path),
1751
+ selected: selectedRefs.some(
1752
+ (item) => item.path === entry.path
1753
+ ),
1745
1754
  onFocusPath,
1746
1755
  onToggleRef
1747
1756
  },
@@ -1768,13 +1777,62 @@ function IssueManagerReferencePickerTreeEntry({
1768
1777
  const expanded = expandedFolderPaths[folderKey] ?? false;
1769
1778
  const childState = directoryStateByPath[folderKey];
1770
1779
  const childEntries = childState?.entries ?? [];
1780
+ const [shouldRenderChildContent, setShouldRenderChildContent] = useState3(expanded);
1781
+ useEffect4(() => {
1782
+ if (expanded) {
1783
+ setShouldRenderChildContent(true);
1784
+ return;
1785
+ }
1786
+ const timeoutId = window.setTimeout(() => {
1787
+ setShouldRenderChildContent(false);
1788
+ }, issueManagerReferenceTreeCollapseDurationMs);
1789
+ return () => window.clearTimeout(timeoutId);
1790
+ }, [expanded]);
1791
+ const shouldBuildChildContent = expanded || shouldRenderChildContent;
1792
+ const childContent = shouldBuildChildContent ? childState?.loading ? /* @__PURE__ */ jsxs(
1793
+ "div",
1794
+ {
1795
+ className: "flex items-center gap-2 px-2 py-2 text-xs text-[var(--text-secondary)]",
1796
+ style: {
1797
+ paddingLeft: `${childDepth * issueManagerReferenceTreeIndent + 12}px`
1798
+ },
1799
+ children: [
1800
+ /* @__PURE__ */ jsx(Spinner, { className: "text-[var(--text-secondary)]", size: 14 }),
1801
+ /* @__PURE__ */ jsx("span", { children: copy.t("referencePicker.loading") })
1802
+ ]
1803
+ }
1804
+ ) : childEntries.length > 0 ? /* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: childEntries.map((childEntry) => /* @__PURE__ */ jsx(
1805
+ IssueManagerReferencePickerTreeEntry,
1806
+ {
1807
+ childDepth: childDepth + 1,
1808
+ copy,
1809
+ directoryStateByPath,
1810
+ entry: childEntry,
1811
+ expandedFolderPaths,
1812
+ focusedPath,
1813
+ selectedRefs,
1814
+ onFocusPath,
1815
+ onToggleFolder,
1816
+ onToggleRef
1817
+ },
1818
+ childEntry.path
1819
+ )) }) : childState?.loaded ? /* @__PURE__ */ jsx(
1820
+ "div",
1821
+ {
1822
+ className: "px-2 py-2 text-xs text-[var(--text-secondary)]",
1823
+ style: {
1824
+ paddingLeft: `${childDepth * issueManagerReferenceTreeIndent + 12}px`
1825
+ },
1826
+ children: copy.t("referencePicker.emptyDirectory")
1827
+ }
1828
+ ) : null : null;
1771
1829
  return /* @__PURE__ */ jsxs("div", { children: [
1772
1830
  /* @__PURE__ */ jsxs(
1773
1831
  "div",
1774
1832
  {
1775
1833
  className: cn(
1776
- "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-lg px-2 py-1.5 transition-colors",
1777
- focused || selected ? "bg-transparency-block" : "hover:bg-transparency-block/60"
1834
+ "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-[6px] py-1.5 pr-1 pl-2 transition-colors",
1835
+ focused || selected ? "bg-transparency-block" : "hover:bg-transparency-block"
1778
1836
  ),
1779
1837
  style: {
1780
1838
  paddingLeft: `${(childDepth - 1) * issueManagerReferenceTreeIndent + 8}px`
@@ -1784,7 +1842,7 @@ function IssueManagerReferencePickerTreeEntry({
1784
1842
  "button",
1785
1843
  {
1786
1844
  "aria-label": resolveIssueManagerReferenceLabel(entry),
1787
- className: "grid size-5 shrink-0 place-items-center rounded-sm text-muted-foreground hover:bg-background/80",
1845
+ className: "grid size-5 shrink-0 place-items-center rounded-sm text-[var(--text-secondary)] hover:bg-[var(--transparency-hover)]",
1788
1846
  type: "button",
1789
1847
  onClick: () => onToggleFolder(entry),
1790
1848
  children: /* @__PURE__ */ jsx(
@@ -1810,64 +1868,51 @@ function IssueManagerReferencePickerTreeEntry({
1810
1868
  }
1811
1869
  },
1812
1870
  children: [
1813
- isFolder ? /* @__PURE__ */ jsx(DirectoryIcon, { className: "size-4 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsx(FileIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
1814
- /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-foreground", children: resolveIssueManagerReferenceLabel(entry) })
1871
+ isFolder ? /* @__PURE__ */ jsx(FolderFilledIcon, { className: "size-4 shrink-0 text-[var(--rich-text-folder)]" }) : /* @__PURE__ */ jsx(FileIcon, { className: "size-4 shrink-0 text-[var(--text-tertiary)]" }),
1872
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-[var(--text-primary)]", children: resolveIssueManagerReferenceLabel(entry) })
1815
1873
  ]
1816
1874
  }
1817
1875
  ),
1818
1876
  /* @__PURE__ */ jsx(
1819
1877
  Button,
1820
1878
  {
1821
- size: "xs",
1879
+ "aria-label": resolveIssueManagerReferenceLabel(entry),
1880
+ "aria-pressed": selected,
1881
+ size: "icon-sm",
1822
1882
  type: "button",
1823
- variant: selected ? "secondary" : "outline",
1883
+ variant: "ghost",
1824
1884
  onClick: () => {
1825
1885
  onFocusPath(entry.path);
1826
1886
  onToggleRef(entry);
1827
1887
  },
1828
- children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : "+"
1888
+ children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : /* @__PURE__ */ jsx(AddLinedIcon, { size: 16 })
1829
1889
  }
1830
1890
  )
1831
1891
  ]
1832
1892
  }
1833
1893
  ),
1834
- isFolder && expanded ? childState?.loading ? /* @__PURE__ */ jsxs(
1894
+ isFolder ? /* @__PURE__ */ jsx(
1835
1895
  "div",
1836
1896
  {
1837
- className: "flex items-center gap-2 px-2 py-2 text-xs text-muted-foreground",
1838
- style: {
1839
- paddingLeft: `${childDepth * issueManagerReferenceTreeIndent + 12}px`
1840
- },
1841
- children: [
1842
- /* @__PURE__ */ jsx(LoadingIcon, { className: "size-3.5 animate-spin" }),
1843
- /* @__PURE__ */ jsx("span", { children: copy.t("referencePicker.loading") })
1844
- ]
1845
- }
1846
- ) : childEntries.length > 0 ? childEntries.map((childEntry) => /* @__PURE__ */ jsx(
1847
- IssueManagerReferencePickerTreeEntry,
1848
- {
1849
- childDepth: childDepth + 1,
1850
- copy,
1851
- directoryStateByPath,
1852
- entry: childEntry,
1853
- expandedFolderPaths,
1854
- focusedPath,
1855
- selectedRefs,
1856
- onFocusPath,
1857
- onToggleFolder,
1858
- onToggleRef
1859
- },
1860
- childEntry.path
1861
- )) : childState?.loaded ? /* @__PURE__ */ jsx(
1862
- "div",
1863
- {
1864
- className: "px-2 py-2 text-xs text-muted-foreground",
1865
- style: {
1866
- paddingLeft: `${childDepth * issueManagerReferenceTreeIndent + 12}px`
1867
- },
1868
- children: copy.t("referencePicker.emptyDirectory")
1897
+ className: cn(
1898
+ "grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none",
1899
+ expanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]",
1900
+ childContent && "mt-[2px]"
1901
+ ),
1902
+ children: /* @__PURE__ */ jsx(
1903
+ "div",
1904
+ {
1905
+ "aria-hidden": expanded ? void 0 : "true",
1906
+ className: cn(
1907
+ "min-h-0 overflow-hidden transition-[opacity,transform] duration-200 ease-out motion-reduce:transition-none",
1908
+ expanded ? "translate-y-0 opacity-100" : "-translate-y-1 opacity-0"
1909
+ ),
1910
+ inert: expanded ? void 0 : true,
1911
+ children: childContent
1912
+ }
1913
+ )
1869
1914
  }
1870
- ) : null : null
1915
+ ) : null
1871
1916
  ] });
1872
1917
  }
1873
1918
  function IssueManagerReferencePickerSearchEntry({
@@ -1882,8 +1927,8 @@ function IssueManagerReferencePickerSearchEntry({
1882
1927
  "div",
1883
1928
  {
1884
1929
  className: cn(
1885
- "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-xl border px-3 py-2.5 transition-colors",
1886
- focused || selected ? "border-border bg-transparency-block" : "border-transparent bg-transparent hover:border-border/70 hover:bg-transparency-block/60"
1930
+ "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-[6px] border py-2.5 pr-1 pl-3 transition-colors",
1931
+ focused || selected ? "border-border bg-transparency-block" : "border-transparent bg-transparent hover:border-border/70 hover:bg-transparency-block"
1887
1932
  ),
1888
1933
  children: [
1889
1934
  /* @__PURE__ */ jsxs(
@@ -1893,10 +1938,10 @@ function IssueManagerReferencePickerSearchEntry({
1893
1938
  type: "button",
1894
1939
  onClick: () => onFocusPath(entry.path),
1895
1940
  children: [
1896
- /* @__PURE__ */ jsx("span", { className: "grid size-9 shrink-0 place-items-center rounded-lg bg-background/90 text-muted-foreground", children: isFolder ? /* @__PURE__ */ jsx(DirectoryIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(FileIcon, { className: "size-4" }) }),
1941
+ /* @__PURE__ */ jsx("span", { className: "grid size-9 shrink-0 place-items-center rounded-lg bg-[var(--transparency-block)] text-[var(--text-tertiary)]", children: isFolder ? /* @__PURE__ */ jsx(FolderFilledIcon, { className: "size-4 text-[var(--rich-text-folder)]" }) : /* @__PURE__ */ jsx(FileIcon, { className: "size-4 text-[var(--text-tertiary)]" }) }),
1897
1942
  /* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
1898
- /* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-medium text-foreground", children: resolveIssueManagerReferenceLabel(entry) }),
1899
- /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-muted-foreground", children: entry.path })
1943
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-medium text-[var(--text-primary)]", children: resolveIssueManagerReferenceLabel(entry) }),
1944
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-[var(--text-secondary)]", children: entry.path })
1900
1945
  ] })
1901
1946
  ]
1902
1947
  }
@@ -1904,14 +1949,16 @@ function IssueManagerReferencePickerSearchEntry({
1904
1949
  /* @__PURE__ */ jsx(
1905
1950
  Button,
1906
1951
  {
1907
- size: "xs",
1952
+ "aria-label": resolveIssueManagerReferenceLabel(entry),
1953
+ "aria-pressed": selected,
1954
+ size: "icon-sm",
1908
1955
  type: "button",
1909
- variant: selected ? "secondary" : "outline",
1956
+ variant: "ghost",
1910
1957
  onClick: () => {
1911
1958
  onFocusPath(entry.path);
1912
1959
  onToggleRef(entry);
1913
1960
  },
1914
- children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : "+"
1961
+ children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : /* @__PURE__ */ jsx(AddLinedIcon, { size: 16 })
1915
1962
  }
1916
1963
  )
1917
1964
  ]
@@ -1921,7 +1968,7 @@ function IssueManagerReferencePickerSearchEntry({
1921
1968
  function IssueManagerReferencePickerFeedback({
1922
1969
  children
1923
1970
  }) {
1924
- return /* @__PURE__ */ jsx("div", { className: "grid min-h-[10rem] place-items-center px-4 text-center text-sm text-muted-foreground", children });
1971
+ return /* @__PURE__ */ jsx("div", { className: "grid min-h-0 flex-1 place-items-center px-4 text-center text-sm text-[var(--text-secondary)]", children });
1925
1972
  }
1926
1973
  function resolveIssueManagerReferenceLabel(ref) {
1927
1974
  return ref.displayName || ref.path.split("/").filter(Boolean).at(-1) || ref.path;
@@ -1929,19 +1976,20 @@ function resolveIssueManagerReferenceLabel(ref) {
1929
1976
 
1930
1977
  // src/ui/internal/reference/IssueManagerReferencePickerSections.tsx
1931
1978
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1979
+ var issueManagerReferencePickerSelectedBadgeClassName = "max-w-[14rem] rounded-[4px] border-transparent bg-[var(--transparency-block)] text-[var(--text-primary)]";
1932
1980
  function IssueManagerReferencePickerPreviewPane({
1933
1981
  copy,
1934
1982
  focusedEntry,
1935
1983
  mode
1936
1984
  }) {
1937
- return /* @__PURE__ */ jsx2("aside", { className: "flex shrink-0 flex-col border-t border-border/70 bg-panel/40 lg:min-h-0 lg:flex-1 lg:border-t-0", children: /* @__PURE__ */ jsx2("div", { className: "flex min-h-0 flex-1 flex-col px-4 py-4 sm:px-5 lg:py-5", children: focusedEntry ? /* @__PURE__ */ jsxs2("div", { className: "flex min-h-0 flex-col gap-4 lg:flex-1 lg:gap-5", children: [
1938
- /* @__PURE__ */ jsx2("div", { className: "flex h-32 min-h-32 items-center justify-center rounded-2xl border border-border/70 bg-background/72 p-5 sm:h-40 sm:min-h-40 lg:h-56 lg:min-h-56 lg:p-6", children: /* @__PURE__ */ jsxs2("div", { className: "space-y-4 text-center", children: [
1939
- /* @__PURE__ */ jsx2("span", { className: "mx-auto grid size-14 place-items-center rounded-2xl bg-transparency-block text-muted-foreground", children: focusedEntry.kind === "folder" ? /* @__PURE__ */ jsx2(DirectoryIcon2, { className: "size-7" }) : /* @__PURE__ */ jsx2(FileIcon2, { className: "size-7" }) }),
1940
- /* @__PURE__ */ jsx2("p", { className: "max-w-[24ch] text-sm leading-5 text-muted-foreground [overflow-wrap:anywhere]", children: focusedEntry.kind === "folder" ? focusedEntry.path : resolveIssueManagerReferenceLabel(focusedEntry) })
1941
- ] }) }),
1985
+ return /* @__PURE__ */ jsx2("aside", { className: "flex shrink-0 flex-col border-t border-[var(--line-1)] bg-[var(--background-fronted)] lg:min-h-0 lg:flex-1 lg:border-t-0", children: /* @__PURE__ */ jsx2("div", { className: "flex min-h-0 flex-1 flex-col px-4 py-4 sm:px-5 lg:py-5", children: focusedEntry ? /* @__PURE__ */ jsxs2("div", { className: "flex min-h-0 flex-col gap-4 lg:flex-1 lg:gap-5", children: [
1986
+ /* @__PURE__ */ jsxs2("div", { className: "flex min-h-32 flex-col items-center justify-center space-y-4 rounded-[8px] border border-[var(--line-2,var(--border-2))] bg-[var(--transparency-block)] px-5 py-8 text-center sm:min-h-40 sm:py-10 lg:min-h-56 lg:py-14", children: [
1987
+ focusedEntry.kind === "folder" ? /* @__PURE__ */ jsx2(FolderFilledIcon2, { className: "mx-auto size-9 text-[var(--rich-text-folder)]" }) : /* @__PURE__ */ jsx2(FileIcon2, { className: "mx-auto size-9 text-[var(--text-tertiary)]" }),
1988
+ /* @__PURE__ */ jsx2("p", { className: "mx-auto max-w-[24ch] text-sm leading-5 text-[var(--text-secondary)] [overflow-wrap:anywhere]", children: focusedEntry.kind === "folder" ? focusedEntry.path : resolveIssueManagerReferenceLabel(focusedEntry) })
1989
+ ] }),
1942
1990
  /* @__PURE__ */ jsx2("div", { className: "space-y-2 lg:space-y-3", children: /* @__PURE__ */ jsxs2("div", { className: "space-y-1.5", children: [
1943
- /* @__PURE__ */ jsx2("p", { className: "truncate text-[15px] font-semibold text-foreground", children: resolveIssueManagerReferenceLabel(focusedEntry) }),
1944
- /* @__PURE__ */ jsx2("p", { className: "line-clamp-3 text-sm text-muted-foreground [overflow-wrap:anywhere]", children: focusedEntry.path })
1991
+ /* @__PURE__ */ jsx2("p", { className: "truncate text-[15px] font-semibold text-[var(--text-primary)]", children: resolveIssueManagerReferenceLabel(focusedEntry) }),
1992
+ /* @__PURE__ */ jsx2("p", { className: "line-clamp-3 text-sm text-[var(--text-secondary)] [overflow-wrap:anywhere]", children: focusedEntry.path })
1945
1993
  ] }) })
1946
1994
  ] }) : /* @__PURE__ */ jsx2(IssueManagerReferencePickerFeedback2, { children: mode === "search" ? copy.t("referencePicker.emptySearch") : copy.t("referencePicker.emptyDirectory") }) }) });
1947
1995
  }
@@ -1951,26 +1999,34 @@ function IssueManagerReferencePickerFooter({
1951
1999
  onConfirm,
1952
2000
  selectedRefs
1953
2001
  }) {
1954
- return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-3 border-t border-border/70 px-4 py-4 sm:px-6 lg:flex-row lg:items-center lg:justify-between", children: [
2002
+ return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-3 border-t border-[var(--line-1)] px-4 py-4 sm:px-6 lg:flex-row lg:items-center lg:justify-between", children: [
1955
2003
  /* @__PURE__ */ jsxs2("div", { className: "flex min-w-0 flex-wrap items-center gap-2 lg:flex-1", children: [
1956
- /* @__PURE__ */ jsx2("span", { className: "text-sm text-muted-foreground", children: copy.t("referencePicker.selectedCount", {
2004
+ /* @__PURE__ */ jsx2("span", { className: "text-sm text-[var(--text-secondary)]", children: copy.t("referencePicker.selectedCount", {
1957
2005
  count: selectedRefs.length
1958
2006
  }) }),
1959
2007
  selectedRefs.slice(0, 2).map((ref) => /* @__PURE__ */ jsx2(
1960
2008
  Badge,
1961
2009
  {
1962
- className: "max-w-[14rem] border-border/70 bg-background/80 text-foreground",
2010
+ className: issueManagerReferencePickerSelectedBadgeClassName,
2011
+ variant: "secondary",
1963
2012
  children: /* @__PURE__ */ jsx2("span", { className: "truncate", children: resolveIssueManagerReferenceLabel(ref) })
1964
2013
  },
1965
2014
  ref.path
1966
2015
  )),
1967
- selectedRefs.length > 2 ? /* @__PURE__ */ jsxs2(Badge, { className: "border-border/70 bg-background/80 text-muted-foreground", children: [
1968
- "+",
1969
- selectedRefs.length - 2
1970
- ] }) : null
2016
+ selectedRefs.length > 2 ? /* @__PURE__ */ jsxs2(
2017
+ Badge,
2018
+ {
2019
+ className: issueManagerReferencePickerSelectedBadgeClassName,
2020
+ variant: "secondary",
2021
+ children: [
2022
+ "+",
2023
+ selectedRefs.length - 2
2024
+ ]
2025
+ }
2026
+ ) : null
1971
2027
  ] }),
1972
2028
  /* @__PURE__ */ jsxs2("div", { className: "flex w-full items-center justify-end gap-2 lg:w-auto lg:shrink-0", children: [
1973
- /* @__PURE__ */ jsx2(Button2, { type: "button", variant: "outline", onClick: onClose, children: copy.t("actions.cancel") }),
2029
+ /* @__PURE__ */ jsx2(Button2, { type: "button", variant: "secondary", onClick: onClose, children: copy.t("actions.cancel") }),
1974
2030
  /* @__PURE__ */ jsx2(
1975
2031
  Button2,
1976
2032
  {
@@ -1986,11 +2042,13 @@ function IssueManagerReferencePickerFooter({
1986
2042
  function IssueManagerReferencePickerFeedback2({
1987
2043
  children
1988
2044
  }) {
1989
- return /* @__PURE__ */ jsx2("div", { className: "grid min-h-[10rem] place-items-center px-4 text-center text-sm text-muted-foreground", children });
2045
+ return /* @__PURE__ */ jsx2("div", { className: "grid min-h-0 flex-1 place-items-center px-4 text-center text-sm text-[var(--text-secondary)]", children });
1990
2046
  }
1991
2047
 
1992
2048
  // src/ui/internal/reference/IssueManagerReferencePicker.tsx
1993
2049
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
2050
+ var issueManagerReferencePickerBackdropMotionClassName = "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-[180ms] motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:animate-none";
2051
+ var issueManagerReferencePickerPanelMotionClassName = "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-[0.96] motion-safe:duration-[250ms] motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:animate-none";
1994
2052
  function IssueManagerReferencePicker({
1995
2053
  copy,
1996
2054
  fileAdapter,
@@ -2021,32 +2079,31 @@ function IssueManagerReferencePicker({
2021
2079
  open,
2022
2080
  workspaceId
2023
2081
  });
2024
- const selectedCountLabel = useMemo4(
2025
- () => copy.t("referencePicker.selectedCount", { count: selectedRefs.length }),
2026
- [copy, selectedRefs.length]
2027
- );
2028
2082
  if (!open) {
2029
2083
  return null;
2030
2084
  }
2031
2085
  const dialog = /* @__PURE__ */ jsx3(
2032
2086
  "div",
2033
2087
  {
2034
- className: "fixed inset-0 grid place-items-center bg-black/24 px-3 py-4 backdrop-blur-md sm:px-6 sm:py-8",
2088
+ className: cn2(
2089
+ "fixed inset-0 grid place-items-center bg-[var(--backdrop)] px-3 py-4 backdrop-blur-md sm:px-6 sm:py-8",
2090
+ issueManagerReferencePickerBackdropMotionClassName
2091
+ ),
2035
2092
  style: { zIndex: "var(--z-panel)" },
2036
2093
  onClick: onClose,
2037
2094
  children: /* @__PURE__ */ jsxs3(
2038
2095
  Card,
2039
2096
  {
2040
2097
  "aria-modal": "true",
2041
- className: "flex h-[min(88vh,44rem)] w-full max-w-5xl flex-col gap-0 overflow-hidden border-border/70 bg-popover/98 py-0 shadow-[var(--workbench-window-elevation)] sm:h-[min(82vh,44rem)]",
2098
+ className: cn2(
2099
+ "flex h-[min(88vh,44rem)] w-full max-w-5xl origin-center flex-col gap-0 overflow-hidden border-[var(--line-1)] bg-[var(--background-fronted)] py-0 text-[var(--text-primary)] shadow-panel sm:h-[min(82vh,44rem)]",
2100
+ issueManagerReferencePickerPanelMotionClassName
2101
+ ),
2042
2102
  role: "dialog",
2043
2103
  onClick: (event) => event.stopPropagation(),
2044
2104
  children: [
2045
- /* @__PURE__ */ jsx3(CardHeader, { className: "border-b border-border/70 px-4 py-4 sm:px-6 sm:py-5", children: /* @__PURE__ */ jsxs3("div", { className: "flex items-start justify-between gap-4", children: [
2046
- /* @__PURE__ */ jsxs3("div", { className: "min-w-0 space-y-1", children: [
2047
- /* @__PURE__ */ jsx3(CardTitle, { children: copy.t("referencePicker.title") }),
2048
- /* @__PURE__ */ jsx3(CardDescription, { children: selectedCountLabel })
2049
- ] }),
2105
+ /* @__PURE__ */ jsx3(CardHeader, { className: "border-b border-[var(--line-1)] px-4 py-4 sm:px-6 sm:py-5", children: /* @__PURE__ */ jsxs3("div", { className: "flex items-start justify-between gap-4", children: [
2106
+ /* @__PURE__ */ jsx3("div", { className: "min-w-0", children: /* @__PURE__ */ jsx3(CardTitle, { children: copy.t("referencePicker.title") }) }),
2050
2107
  /* @__PURE__ */ jsx3(
2051
2108
  Button3,
2052
2109
  {
@@ -2109,10 +2166,11 @@ function IssueManagerReferencePicker({
2109
2166
  }
2110
2167
 
2111
2168
  // src/ui/internal/shell/IssueManagerShell.tsx
2112
- import { Button as Button13, cn as cn9 } from "@nextop-os/ui-system";
2169
+ import { Button as Button13, FileCreateIcon as FileCreateIcon4, cn as cn11 } from "@nextop-os/ui-system";
2113
2170
 
2114
2171
  // src/ui/internal/shell/IssueManagerPanels.tsx
2115
- import { Badge as Badge3, Button as Button7, Input as Input2 } from "@nextop-os/ui-system";
2172
+ import { useState as useState6 } from "react";
2173
+ import { Badge as Badge3, Button as Button7, ConfirmationDialog, Input as Input2 } from "@nextop-os/ui-system";
2116
2174
 
2117
2175
  // src/ui/internal/issue/IssueManagerIssueSections.tsx
2118
2176
  import {
@@ -2120,7 +2178,7 @@ import {
2120
2178
  Button as Button5,
2121
2179
  FileCreateIcon as FileCreateIcon2,
2122
2180
  ScrollArea as ScrollArea2,
2123
- cn as cn2
2181
+ cn as cn3
2124
2182
  } from "@nextop-os/ui-system";
2125
2183
 
2126
2184
  // src/ui/internal/panel/IssueManagerPanelText.ts
@@ -2195,19 +2253,19 @@ function IssueManagerDetailTextSection({
2195
2253
  tone = "muted"
2196
2254
  }) {
2197
2255
  return /* @__PURE__ */ jsxs5("section", { className: "grid gap-2.5", children: [
2198
- /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-foreground", children: label }),
2256
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: label }),
2199
2257
  /* @__PURE__ */ jsxs5("div", { className: "grid gap-1.5", children: [
2200
2258
  /* @__PURE__ */ jsx5(
2201
2259
  "p",
2202
2260
  {
2203
- className: cn2(
2204
- "text-sm leading-6",
2205
- tone === "destructive" ? "text-destructive" : "text-muted-foreground"
2261
+ className: cn3(
2262
+ "text-sm font-normal leading-6",
2263
+ tone === "destructive" ? "text-[var(--state-danger)]" : "text-[var(--text-secondary)]"
2206
2264
  ),
2207
2265
  children: body
2208
2266
  }
2209
2267
  ),
2210
- meta ? /* @__PURE__ */ jsx5("p", { className: "text-xs leading-5 text-muted-foreground", children: meta }) : null
2268
+ meta ? /* @__PURE__ */ jsx5("p", { className: "text-xs font-normal leading-5 text-[var(--text-secondary)]", children: meta }) : null
2211
2269
  ] })
2212
2270
  ] });
2213
2271
  }
@@ -2217,8 +2275,8 @@ function IssueManagerOutputSection({
2217
2275
  outputs
2218
2276
  }) {
2219
2277
  return /* @__PURE__ */ jsxs5("section", { className: "grid gap-2.5", children: [
2220
- /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-foreground", children: copy.t("labels.executionOutputs") }),
2221
- outputs.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "text-sm leading-6 text-muted-foreground", children: copy.t("messages.noExecutionOutputs") }) : /* @__PURE__ */ jsx5("div", { className: "grid gap-2", children: outputs.map((output) => /* @__PURE__ */ jsxs5(
2278
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: copy.t("labels.executionOutputs") }),
2279
+ outputs.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "text-sm font-normal leading-6 text-[var(--text-secondary)]", children: copy.t("messages.noExecutionOutputs") }) : /* @__PURE__ */ jsx5("div", { className: "grid gap-2", children: outputs.map((output) => /* @__PURE__ */ jsxs5(
2222
2280
  "button",
2223
2281
  {
2224
2282
  className: "flex items-start justify-between gap-4 rounded-xl border border-border/65 px-4 py-3 text-left transition-colors hover:bg-accent/18",
@@ -2232,10 +2290,10 @@ function IssueManagerOutputSection({
2232
2290
  },
2233
2291
  children: [
2234
2292
  /* @__PURE__ */ jsxs5("span", { className: "min-w-0 flex-1", children: [
2235
- /* @__PURE__ */ jsx5("span", { className: "block truncate text-sm font-semibold text-foreground", children: output.displayName }),
2236
- /* @__PURE__ */ jsx5("span", { className: "mt-1 block truncate text-xs text-muted-foreground", children: output.path })
2293
+ /* @__PURE__ */ jsx5("span", { className: "block truncate text-sm font-semibold text-[var(--text-primary)]", children: output.displayName }),
2294
+ /* @__PURE__ */ jsx5("span", { className: "mt-1 block truncate text-xs font-normal text-[var(--text-secondary)]", children: output.path })
2237
2295
  ] }),
2238
- /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs text-muted-foreground", children: formatIssueManagerTimestamp(output.createdAtUnix) || "" })
2296
+ /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs font-normal text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(output.createdAtUnix) || "" })
2239
2297
  ]
2240
2298
  },
2241
2299
  output.outputId
@@ -2251,26 +2309,16 @@ function IssueManagerSubtaskSection({
2251
2309
  }) {
2252
2310
  return /* @__PURE__ */ jsxs5("section", { className: "grid gap-2.5", children: [
2253
2311
  /* @__PURE__ */ jsxs5("div", { className: "flex items-center justify-between gap-3", children: [
2254
- /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-foreground", children: copy.t("labels.subtasks") }),
2255
- /* @__PURE__ */ jsxs5(
2256
- Button5,
2257
- {
2258
- className: "px-3",
2259
- size: "dialog",
2260
- type: "button",
2261
- variant: "secondary",
2262
- onClick: onCreate,
2263
- children: [
2264
- /* @__PURE__ */ jsx5(FileCreateIcon2, { size: 14 }),
2265
- copy.t("actions.add")
2266
- ]
2267
- }
2268
- )
2312
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: copy.t("labels.subtasks") }),
2313
+ /* @__PURE__ */ jsxs5(Button5, { size: "dialog", type: "button", variant: "ghost", onClick: onCreate, children: [
2314
+ /* @__PURE__ */ jsx5(FileCreateIcon2, { size: 14 }),
2315
+ copy.t("actions.add")
2316
+ ] })
2269
2317
  ] }),
2270
- tasks.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "text-sm leading-6 text-muted-foreground", children: copy.t("messages.noSubtasksForIssue") }) : /* @__PURE__ */ jsx5("div", { className: "grid gap-2", children: tasks.map((task) => /* @__PURE__ */ jsxs5(
2318
+ tasks.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "text-sm font-normal leading-6 text-[var(--text-secondary)]", children: copy.t("messages.noSubtasksForIssue") }) : /* @__PURE__ */ jsx5("div", { className: "grid gap-2", children: tasks.map((task) => /* @__PURE__ */ jsxs5(
2271
2319
  "button",
2272
2320
  {
2273
- className: cn2(
2321
+ className: cn3(
2274
2322
  "flex items-start justify-between gap-4 rounded-xl border px-4 py-3 text-left transition-colors",
2275
2323
  selectedTaskId === task.taskId ? "border-border/90 bg-background-fronted" : "border-border/65 hover:bg-accent/18"
2276
2324
  ),
@@ -2279,15 +2327,15 @@ function IssueManagerSubtaskSection({
2279
2327
  children: [
2280
2328
  /* @__PURE__ */ jsxs5("div", { className: "min-w-0 flex-1", children: [
2281
2329
  /* @__PURE__ */ jsxs5("div", { className: "flex min-w-0 items-center gap-2.5", children: [
2282
- /* @__PURE__ */ jsx5("span", { className: "truncate text-sm font-semibold text-foreground", children: task.title }),
2283
- /* @__PURE__ */ jsx5(Badge2, { className: "rounded-md border-transparent bg-muted px-2 py-1 text-[11px] font-medium text-muted-foreground", children: resolveIssueManagerStatusLabel(copy, task.status) })
2330
+ /* @__PURE__ */ jsx5("span", { className: "truncate text-sm font-semibold text-[var(--text-primary)]", children: task.title }),
2331
+ /* @__PURE__ */ jsx5(Badge2, { className: "rounded-md px-2 py-1 text-[11px] font-medium", children: resolveIssueManagerStatusLabel(copy, task.status) })
2284
2332
  ] }),
2285
- /* @__PURE__ */ jsx5("p", { className: "mt-2 line-clamp-2 text-sm leading-6 text-muted-foreground", children: summarizeIssueManagerContent(
2333
+ /* @__PURE__ */ jsx5("p", { className: "mt-2 line-clamp-2 text-sm font-normal leading-6 text-[var(--text-secondary)]", children: summarizeIssueManagerContent(
2286
2334
  task.content,
2287
2335
  copy.t("messages.taskContentEmpty")
2288
2336
  ) })
2289
2337
  ] }),
2290
- /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs text-muted-foreground", children: formatIssueManagerTimestamp(
2338
+ /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs font-normal text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(
2291
2339
  task.createdAtUnix ?? task.updatedAtUnix
2292
2340
  ) || "" })
2293
2341
  ]
@@ -2298,9 +2346,9 @@ function IssueManagerSubtaskSection({
2298
2346
  }
2299
2347
 
2300
2348
  // src/ui/internal/content/IssueManagerDescriptionSection.tsx
2301
- import { useEffect as useEffect4, useRef, useState as useState3 } from "react";
2349
+ import { useEffect as useEffect5, useRef, useState as useState4 } from "react";
2302
2350
  import { RichTextReadonlyContent } from "@nextop-os/ui-rich-text/editor";
2303
- import { cn as cn3 } from "@nextop-os/ui-system";
2351
+ import { cn as cn4 } from "@nextop-os/ui-system";
2304
2352
  import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
2305
2353
  function IssueManagerDescriptionSection({
2306
2354
  content,
@@ -2311,9 +2359,9 @@ function IssueManagerDescriptionSection({
2311
2359
  variant = "card"
2312
2360
  }) {
2313
2361
  const contentRef = useRef(null);
2314
- const [isOverflowing, setIsOverflowing] = useState3(false);
2362
+ const [isOverflowing, setIsOverflowing] = useState4(false);
2315
2363
  const normalizedContent = normalizeIssueManagerContent(content).trim();
2316
- useEffect4(() => {
2364
+ useEffect5(() => {
2317
2365
  if (variant === "plain") {
2318
2366
  setIsOverflowing(false);
2319
2367
  return;
@@ -2346,13 +2394,13 @@ function IssueManagerDescriptionSection({
2346
2394
  if (variant === "plain") {
2347
2395
  return /* @__PURE__ */ jsxs6("section", { className: "grid gap-2", children: [
2348
2396
  /* @__PURE__ */ jsx6("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: label }),
2349
- normalizedContent ? /* @__PURE__ */ jsx6("div", { className: "max-w-3xl text-sm leading-5 text-text-secondary", children: /* @__PURE__ */ jsx6(
2397
+ normalizedContent ? /* @__PURE__ */ jsx6("div", { className: "max-w-3xl text-sm font-normal leading-5 text-[var(--text-secondary)]", children: /* @__PURE__ */ jsx6(
2350
2398
  IssueManagerDescriptionContent,
2351
2399
  {
2352
2400
  content: normalizedContent,
2353
2401
  onOpen
2354
2402
  }
2355
- ) }) : /* @__PURE__ */ jsx6("p", { className: "text-sm leading-5 text-text-secondary", children: emptyLabel })
2403
+ ) }) : /* @__PURE__ */ jsx6("p", { className: "text-sm font-normal leading-5 text-[var(--text-secondary)]", children: emptyLabel })
2356
2404
  ] });
2357
2405
  }
2358
2406
  return /* @__PURE__ */ jsxs6("section", { className: "grid gap-2", children: [
@@ -2360,7 +2408,7 @@ function IssueManagerDescriptionSection({
2360
2408
  /* @__PURE__ */ jsxs6(
2361
2409
  "div",
2362
2410
  {
2363
- className: cn3(
2411
+ className: cn4(
2364
2412
  "relative min-w-0 rounded-lg border border-border-1 bg-transparent px-4 py-3",
2365
2413
  minHeightClass
2366
2414
  ),
@@ -2368,8 +2416,8 @@ function IssueManagerDescriptionSection({
2368
2416
  /* @__PURE__ */ jsx6(
2369
2417
  "div",
2370
2418
  {
2371
- className: cn3(
2372
- "max-h-[18rem] overflow-y-auto pr-2 text-sm leading-5 text-text-secondary",
2419
+ className: cn4(
2420
+ "max-h-[18rem] overflow-y-auto pr-2 text-sm font-normal leading-5 text-[var(--text-secondary)]",
2373
2421
  isOverflowing && "pb-8"
2374
2422
  ),
2375
2423
  ref: contentRef,
@@ -2379,7 +2427,7 @@ function IssueManagerDescriptionSection({
2379
2427
  content: normalizedContent,
2380
2428
  onOpen
2381
2429
  }
2382
- ) : /* @__PURE__ */ jsx6("p", { className: "text-text-secondary", children: emptyLabel })
2430
+ ) : /* @__PURE__ */ jsx6("p", { className: "font-normal text-[var(--text-secondary)]", children: emptyLabel })
2383
2431
  }
2384
2432
  ),
2385
2433
  isOverflowing ? /* @__PURE__ */ jsx6(
@@ -2414,10 +2462,12 @@ function IssueManagerDescriptionContent({
2414
2462
  }
2415
2463
 
2416
2464
  // src/ui/internal/content/IssueManagerRichTextTextarea.tsx
2417
- import { useEffect as useEffect5, useMemo as useMemo5, useRef as useRef2, useState as useState4 } from "react";
2465
+ import { useEffect as useEffect6, useMemo as useMemo4, useRef as useRef2, useState as useState5 } from "react";
2418
2466
  import { RichTextAtEditor } from "@nextop-os/ui-rich-text/editor";
2419
- import { Button as Button6, LinkIcon, cn as cn4 } from "@nextop-os/ui-system";
2467
+ import { Button as Button6, LinkIcon, cn as cn5 } from "@nextop-os/ui-system";
2420
2468
  import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
2469
+ var issueManagerRichTextTextareaBaseClassName = "min-h-20 w-full rounded-[8px] border border-transparent bg-[var(--transparency-block)] p-3 text-sm font-normal leading-[1.3] text-[var(--text-primary)] transition-[background-color,border-color,color] outline-none shadow-none placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none";
2470
+ var issueManagerRichTextPlaceholderBaseClassName = "min-h-20 w-full p-3 text-sm font-normal leading-[1.3] text-[var(--text-placeholder)]";
2421
2471
  function IssueManagerRichTextTextarea({
2422
2472
  controller,
2423
2473
  onChange,
@@ -2426,15 +2476,15 @@ function IssueManagerRichTextTextarea({
2426
2476
  textareaClassName,
2427
2477
  value
2428
2478
  }) {
2429
- const providers = useMemo5(
2479
+ const providers = useMemo4(
2430
2480
  () => controller.resolveRichTextAtProviders(surface),
2431
2481
  [controller, surface]
2432
2482
  );
2433
2483
  const showReferenceAction = controller.canReferenceWorkspaceFiles;
2434
- const [focusSignal, setFocusSignal] = useState4(0);
2484
+ const [focusSignal, setFocusSignal] = useState5(0);
2435
2485
  const previousValueRef = useRef2(value);
2436
2486
  const wasAddingReferenceRef = useRef2(false);
2437
- useEffect5(() => {
2487
+ useEffect6(() => {
2438
2488
  const isAddingReference = controller.referenceTarget?.mode === "insert" && controller.referenceTarget.parentKind === surface;
2439
2489
  if (wasAddingReferenceRef.current && !isAddingReference && value !== previousValueRef.current) {
2440
2490
  setFocusSignal((current) => current + 1);
@@ -2454,15 +2504,24 @@ function IssueManagerRichTextTextarea({
2454
2504
  noMatchesLabel: controller.copy.t("richTextAt.noMatches"),
2455
2505
  removeReferenceActionLabel: controller.copy.t("actions.removeReference")
2456
2506
  },
2457
- textareaClassName: cn4(textareaClassName, showReferenceAction && "pb-14"),
2507
+ textareaClassName: cn5(
2508
+ issueManagerRichTextTextareaBaseClassName,
2509
+ textareaClassName,
2510
+ showReferenceAction && "pb-11"
2511
+ ),
2512
+ placeholderClassName: cn5(
2513
+ issueManagerRichTextPlaceholderBaseClassName,
2514
+ textareaClassName,
2515
+ showReferenceAction && "pb-11"
2516
+ ),
2458
2517
  placeholder,
2459
2518
  value,
2460
2519
  onChange,
2461
- overlay: showReferenceAction ? /* @__PURE__ */ jsx7("div", { className: "pointer-events-none absolute inset-x-4 bottom-3 z-10 flex", children: /* @__PURE__ */ jsxs7(
2520
+ overlay: showReferenceAction ? /* @__PURE__ */ jsx7("div", { className: "pointer-events-none absolute inset-x-3 bottom-3 z-10 flex", children: /* @__PURE__ */ jsxs7(
2462
2521
  Button6,
2463
2522
  {
2464
2523
  className: "pointer-events-auto",
2465
- size: "sm",
2524
+ size: "default",
2466
2525
  type: "button",
2467
2526
  variant: "secondary",
2468
2527
  onClick: () => {
@@ -2478,6 +2537,14 @@ function IssueManagerRichTextTextarea({
2478
2537
  );
2479
2538
  }
2480
2539
 
2540
+ // src/ui/internal/shell/IssueManagerEditorMotion.ts
2541
+ var issueManagerEditorRiseInClassName = "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-bottom-3 motion-safe:duration-[240ms] motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] motion-safe:[animation-fill-mode:both] motion-reduce:animate-none";
2542
+ var issueManagerEditorRiseInDelay0ClassName = "motion-safe:[animation-delay:0ms]";
2543
+ var issueManagerEditorRiseInDelay1ClassName = "motion-safe:[animation-delay:55ms]";
2544
+ var issueManagerEditorRiseInDelay2ClassName = "motion-safe:[animation-delay:110ms]";
2545
+ var issueManagerEditorRiseInDelay3ClassName = "motion-safe:[animation-delay:165ms]";
2546
+ var issueManagerEditorFooterFadeInClassName = "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-[180ms] motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] motion-safe:[animation-delay:180ms] motion-safe:[animation-fill-mode:both] motion-reduce:animate-none";
2547
+
2481
2548
  // src/ui/internal/shell/IssueManagerPanels.tsx
2482
2549
  import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
2483
2550
  function IssueManagerIssuePane({
@@ -2495,61 +2562,87 @@ function IssueManagerIssuePane({
2495
2562
  const selectedTask = selectedTaskId ? (controller.taskDetail.value?.task?.taskId === selectedTaskId ? controller.taskDetail.value.task : tasks.find((task) => task.taskId === selectedTaskId)) ?? null : null;
2496
2563
  const latestRun = selectedTask ? controller.taskDetail.value?.latestRun ?? controller.taskDetail.value?.recentRuns[0] ?? null : null;
2497
2564
  const latestOutputs = selectedTask ? controller.taskDetail.value?.latestOutputs ?? [] : [];
2565
+ const [deleteDialogOpen, setDeleteDialogOpen] = useState6(false);
2566
+ const [deleteBusy, setDeleteBusy] = useState6(false);
2498
2567
  if (isCreatingIssue || isEditingIssue) {
2499
2568
  return /* @__PURE__ */ jsxs8("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: [
2500
2569
  /* @__PURE__ */ jsx8("div", { className: "flex min-h-0 flex-1 flex-col gap-[14px] overflow-y-auto px-7 py-8", children: /* @__PURE__ */ jsxs8("div", { className: "flex w-full min-w-0 flex-col gap-3", children: [
2501
- /* @__PURE__ */ jsx8("div", { children: /* @__PURE__ */ jsx8("h2", { className: "m-0 text-[17px] font-semibold leading-[1.35] text-foreground", children: isCreatingIssue ? copy.t("actions.createIssue") : copy.t("actions.editIssue") }) }),
2570
+ /* @__PURE__ */ jsx8(
2571
+ "div",
2572
+ {
2573
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
2574
+ children: /* @__PURE__ */ jsx8("h2", { className: "m-0 text-[17px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: isCreatingIssue ? copy.t("actions.createIssue") : copy.t("actions.editIssue") })
2575
+ }
2576
+ ),
2502
2577
  /* @__PURE__ */ jsxs8("div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
2503
- /* @__PURE__ */ jsxs8("label", { className: "flex w-full min-w-0 flex-col gap-2 text-sm font-semibold text-foreground", children: [
2504
- /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.title") }),
2578
+ /* @__PURE__ */ jsxs8(
2579
+ "label",
2580
+ {
2581
+ className: `flex w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
2582
+ children: [
2583
+ /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.title") }),
2584
+ /* @__PURE__ */ jsx8(
2585
+ Input2,
2586
+ {
2587
+ placeholder: copy.t("composer.issueTitlePlaceholder"),
2588
+ variant: "md",
2589
+ value: controller.issueDraft.title,
2590
+ onChange: (event) => controller.setIssueTitle(event.target.value)
2591
+ }
2592
+ )
2593
+ ]
2594
+ }
2595
+ ),
2596
+ /* @__PURE__ */ jsxs8(
2597
+ "div",
2598
+ {
2599
+ className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
2600
+ children: [
2601
+ /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.content") }),
2602
+ /* @__PURE__ */ jsx8(
2603
+ IssueManagerRichTextTextarea,
2604
+ {
2605
+ controller,
2606
+ surface: "issue",
2607
+ textareaClassName: "min-h-[180px] resize-none",
2608
+ placeholder: copy.t("composer.issueContentPlaceholder"),
2609
+ value: controller.issueDraft.content,
2610
+ onChange: controller.setIssueContent
2611
+ }
2612
+ )
2613
+ ]
2614
+ }
2615
+ )
2616
+ ] })
2617
+ ] }) }),
2618
+ /* @__PURE__ */ jsx8(
2619
+ "div",
2620
+ {
2621
+ className: `shrink-0 border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
2622
+ children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-end gap-3", children: [
2505
2623
  /* @__PURE__ */ jsx8(
2506
- Input2,
2624
+ Button7,
2507
2625
  {
2508
- className: "h-10 min-h-10 rounded-lg border-border-1 bg-transparency-block px-3 text-sm font-semibold text-[var(--text-primary)] shadow-none placeholder:text-[var(--text-placeholder)]",
2509
- placeholder: copy.t("composer.issueTitlePlaceholder"),
2510
- value: controller.issueDraft.title,
2511
- onChange: (event) => controller.setIssueTitle(event.target.value)
2626
+ size: "dialog",
2627
+ type: "button",
2628
+ variant: "secondary",
2629
+ onClick: onDismissCreate,
2630
+ children: copy.t("actions.cancel")
2512
2631
  }
2513
- )
2514
- ] }),
2515
- /* @__PURE__ */ jsxs8("div", { className: "flex min-h-0 w-full min-w-0 flex-col gap-2 text-sm font-semibold text-foreground", children: [
2516
- /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.content") }),
2632
+ ),
2517
2633
  /* @__PURE__ */ jsx8(
2518
- IssueManagerRichTextTextarea,
2634
+ Button7,
2519
2635
  {
2520
- controller,
2521
- surface: "issue",
2522
- textareaClassName: "min-h-[180px] w-full resize-none rounded-lg border border-border-1 bg-transparency-block px-4 py-3 text-sm font-normal leading-5 text-[var(--text-primary)] outline-none placeholder:text-[var(--text-placeholder)]",
2523
- placeholder: copy.t("composer.issueContentPlaceholder"),
2524
- value: controller.issueDraft.content,
2525
- onChange: controller.setIssueContent
2636
+ disabled: isIssueTitleMissing,
2637
+ size: "dialog",
2638
+ type: "button",
2639
+ onClick: () => void controller.saveIssue(),
2640
+ children: copy.t("actions.saveIssue")
2526
2641
  }
2527
2642
  )
2528
2643
  ] })
2529
- ] })
2530
- ] }) }),
2531
- /* @__PURE__ */ jsx8("div", { className: "shrink-0 border-t border-border-1 px-7 py-4", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-end gap-4", children: [
2532
- /* @__PURE__ */ jsx8(
2533
- Button7,
2534
- {
2535
- size: "dialog",
2536
- type: "button",
2537
- variant: "secondary",
2538
- onClick: onDismissCreate,
2539
- children: copy.t("actions.cancel")
2540
- }
2541
- ),
2542
- /* @__PURE__ */ jsx8(
2543
- Button7,
2544
- {
2545
- disabled: isIssueTitleMissing,
2546
- size: "dialog",
2547
- type: "button",
2548
- onClick: () => void controller.saveIssue(),
2549
- children: copy.t("actions.saveIssue")
2550
- }
2551
- )
2552
- ] }) })
2644
+ }
2645
+ )
2553
2646
  ] });
2554
2647
  }
2555
2648
  if (!selectedIssue) {
@@ -2558,14 +2651,28 @@ function IssueManagerIssuePane({
2558
2651
  return /* @__PURE__ */ jsx8("div", { className: "flex min-h-0 flex-col", children: /* @__PURE__ */ jsx8("div", { className: "min-h-0 flex-1 overflow-y-auto px-8 py-7", children: controller.issueDetail.isLoading && controller.issueDetail.value === null ? /* @__PURE__ */ jsx8(IssueManagerPaneLoadingState, {}) : /* @__PURE__ */ jsxs8("div", { className: "flex w-full min-w-0 flex-col gap-9", children: [
2559
2652
  /* @__PURE__ */ jsxs8("header", { className: "flex items-start justify-between gap-6", children: [
2560
2653
  /* @__PURE__ */ jsxs8("div", { className: "min-w-0 flex-1", children: [
2561
- /* @__PURE__ */ jsx8("h2", { className: "line-clamp-2 text-base font-semibold leading-6 text-foreground", children: selectedIssue.title }),
2562
- /* @__PURE__ */ jsxs8("div", { className: "mt-3 flex flex-wrap items-center gap-x-5 gap-y-2 text-sm text-muted-foreground", children: [
2563
- /* @__PURE__ */ jsx8(Badge3, { className: "rounded-full border-transparent bg-muted px-2 py-1 text-[11px] text-muted-foreground", children: resolveIssueManagerStatusLabel(copy, selectedIssue.status) }),
2654
+ /* @__PURE__ */ jsx8("h2", { className: "line-clamp-2 text-base font-semibold leading-6 text-[var(--text-primary)]", children: selectedIssue.title }),
2655
+ /* @__PURE__ */ jsxs8("div", { className: "mt-3 flex flex-wrap items-center gap-x-2 gap-y-2 text-sm font-normal text-[var(--text-secondary)]", children: [
2656
+ /* @__PURE__ */ jsx8(Badge3, { variant: "secondary", children: resolveIssueManagerStatusLabel(copy, selectedIssue.status) }),
2657
+ /* @__PURE__ */ jsx8(
2658
+ "span",
2659
+ {
2660
+ "aria-hidden": "true",
2661
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2662
+ }
2663
+ ),
2564
2664
  /* @__PURE__ */ jsxs8("span", { children: [
2565
2665
  copy.t("labels.creator"),
2566
2666
  " ",
2567
2667
  resolveIssueManagerCreatorLabel(selectedIssue)
2568
2668
  ] }),
2669
+ /* @__PURE__ */ jsx8(
2670
+ "span",
2671
+ {
2672
+ "aria-hidden": "true",
2673
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2674
+ }
2675
+ ),
2569
2676
  /* @__PURE__ */ jsxs8("span", { children: [
2570
2677
  copy.t("labels.createdAt"),
2571
2678
  " ",
@@ -2573,12 +2680,10 @@ function IssueManagerIssuePane({
2573
2680
  ] })
2574
2681
  ] })
2575
2682
  ] }),
2576
- /* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-5 pt-1", children: [
2683
+ /* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-2 pt-1", children: [
2577
2684
  /* @__PURE__ */ jsx8(
2578
2685
  Button7,
2579
2686
  {
2580
- className: "h-auto px-0 text-sm font-semibold text-muted-foreground hover:text-foreground",
2581
- size: "sm",
2582
2687
  type: "button",
2583
2688
  variant: "ghost",
2584
2689
  onClick: () => controller.setIssueEditorMode("edit"),
@@ -2588,18 +2693,35 @@ function IssueManagerIssuePane({
2588
2693
  /* @__PURE__ */ jsx8(
2589
2694
  Button7,
2590
2695
  {
2591
- className: "h-auto px-0 text-sm font-semibold text-destructive hover:text-destructive",
2592
- size: "sm",
2696
+ className: "text-[var(--state-danger)] hover:bg-[var(--on-danger)] hover:text-[var(--state-danger)]",
2593
2697
  type: "button",
2594
2698
  variant: "ghost",
2595
- onClick: () => {
2596
- void controller.deleteIssue();
2597
- },
2699
+ onClick: () => setDeleteDialogOpen(true),
2598
2700
  children: copy.t("actions.delete")
2599
2701
  }
2600
2702
  )
2601
2703
  ] })
2602
2704
  ] }),
2705
+ /* @__PURE__ */ jsx8(
2706
+ ConfirmationDialog,
2707
+ {
2708
+ cancelLabel: copy.t("actions.cancel"),
2709
+ confirmBusy: deleteBusy,
2710
+ confirmLabel: copy.t("actions.delete"),
2711
+ description: selectedIssue.title,
2712
+ open: deleteDialogOpen,
2713
+ title: copy.t("confirmations.deleteIssue"),
2714
+ tone: "destructive",
2715
+ onConfirm: () => {
2716
+ setDeleteBusy(true);
2717
+ void controller.deleteIssue({ skipConfirmation: true }).finally(() => {
2718
+ setDeleteBusy(false);
2719
+ setDeleteDialogOpen(false);
2720
+ });
2721
+ },
2722
+ onOpenChange: setDeleteDialogOpen
2723
+ }
2724
+ ),
2603
2725
  /* @__PURE__ */ jsx8(
2604
2726
  IssueManagerDescriptionSection,
2605
2727
  {
@@ -2643,26 +2765,26 @@ function IssueManagerIssuePane({
2643
2765
  }
2644
2766
 
2645
2767
  // src/ui/internal/shell/IssueManagerBottomBar.tsx
2646
- import { Button as Button8, cn as cn5 } from "@nextop-os/ui-system";
2768
+ import { Button as Button8, cn as cn7 } from "@nextop-os/ui-system";
2647
2769
 
2648
2770
  // src/ui/internal/task/IssueManagerRunSections.tsx
2649
- import { useState as useState5 } from "react";
2771
+ import { useState as useState7 } from "react";
2650
2772
  import {
2651
2773
  Badge as Badge4,
2652
2774
  Select,
2653
2775
  SelectContent,
2654
2776
  SelectItem,
2655
2777
  SelectTrigger,
2656
- SparkIcon
2778
+ buttonVariants,
2779
+ cn as cn6
2657
2780
  } from "@nextop-os/ui-system";
2658
2781
  import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
2659
2782
  function IssueManagerRunActionTrigger({
2660
2783
  controller,
2661
2784
  disabled = false,
2662
- iconSize = 16,
2663
2785
  triggerClassName
2664
2786
  }) {
2665
- const [resetToken, setResetToken] = useState5(0);
2787
+ const [resetToken, setResetToken] = useState7(0);
2666
2788
  return /* @__PURE__ */ jsxs9(
2667
2789
  Select,
2668
2790
  {
@@ -2676,11 +2798,12 @@ function IssueManagerRunActionTrigger({
2676
2798
  SelectTrigger,
2677
2799
  {
2678
2800
  "aria-label": controller.copy.t("actions.askAgentToRun"),
2679
- className: triggerClassName,
2680
- children: /* @__PURE__ */ jsxs9("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
2681
- /* @__PURE__ */ jsx9(SparkIcon, { size: iconSize }),
2682
- /* @__PURE__ */ jsx9("span", { className: "truncate", children: controller.copy.t("actions.askAgentToRun") })
2683
- ] })
2801
+ className: cn6(
2802
+ buttonVariants({ variant: "secondary", size: "dialog" }),
2803
+ "[&>svg]:hidden",
2804
+ triggerClassName
2805
+ ),
2806
+ children: /* @__PURE__ */ jsx9("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: /* @__PURE__ */ jsx9("span", { className: "truncate", children: controller.copy.t("actions.askAgentToRun") }) })
2684
2807
  }
2685
2808
  ),
2686
2809
  /* @__PURE__ */ jsx9(SelectContent, { style: { zIndex: "var(--z-panel-popover)" }, children: controller.providerOptions.map((provider) => /* @__PURE__ */ jsx9(SelectItem, { value: provider, children: provider }, provider)) })
@@ -2698,7 +2821,7 @@ function IssueManagerRunPanels({
2698
2821
  return /* @__PURE__ */ jsxs9("div", { className: "grid gap-4", children: [
2699
2822
  /* @__PURE__ */ jsxs9("section", { className: "rounded-lg border border-border-1 bg-transparent px-4 py-4", children: [
2700
2823
  /* @__PURE__ */ jsx9("h4", { className: "mb-3 text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.recentRuns") }),
2701
- recentRuns.length === 0 ? /* @__PURE__ */ jsx9("p", { className: "text-sm leading-5 text-text-secondary", children: copy.t("messages.noRecentRuns") }) : /* @__PURE__ */ jsx9("div", { className: "grid gap-2.5", children: recentRuns.map((run) => /* @__PURE__ */ jsxs9(
2824
+ recentRuns.length === 0 ? /* @__PURE__ */ jsx9("p", { className: "text-sm leading-5 text-[var(--text-secondary)]", children: copy.t("messages.noRecentRuns") }) : /* @__PURE__ */ jsx9("div", { className: "grid gap-2.5", children: recentRuns.map((run) => /* @__PURE__ */ jsxs9(
2702
2825
  "div",
2703
2826
  {
2704
2827
  className: "rounded-lg border border-[var(--border-2)] bg-transparent px-3.5 py-3",
@@ -2706,13 +2829,13 @@ function IssueManagerRunPanels({
2706
2829
  /* @__PURE__ */ jsxs9("div", { className: "flex items-start justify-between gap-3", children: [
2707
2830
  /* @__PURE__ */ jsxs9("div", { className: "min-w-0", children: [
2708
2831
  /* @__PURE__ */ jsx9("p", { className: "truncate text-sm font-semibold leading-5 text-[var(--text-primary)]", children: run.summary || run.runId }),
2709
- /* @__PURE__ */ jsx9("p", { className: "mt-1 text-xs leading-[1.55] text-text-secondary", children: formatIssueManagerTimestamp(
2832
+ /* @__PURE__ */ jsx9("p", { className: "mt-1 text-xs leading-[1.55] text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(
2710
2833
  run.updatedAtUnix ?? run.createdAtUnix
2711
2834
  ) })
2712
2835
  ] }),
2713
- /* @__PURE__ */ jsx9(Badge4, { className: "rounded-full border-transparent bg-transparency-block px-2.5 py-1 text-xs text-text-secondary", children: resolveIssueManagerStatusLabel(copy, run.status) })
2836
+ /* @__PURE__ */ jsx9(Badge4, { className: "rounded-full border-transparent bg-transparency-block px-2.5 py-1 text-xs text-[var(--text-secondary)]", children: resolveIssueManagerStatusLabel(copy, run.status) })
2714
2837
  ] }),
2715
- run.errorMessage ? /* @__PURE__ */ jsx9("p", { className: "mt-2 text-xs text-destructive", children: run.errorMessage }) : null
2838
+ run.errorMessage ? /* @__PURE__ */ jsx9("p", { className: "mt-2 text-xs text-[var(--state-danger)]", children: run.errorMessage }) : null
2716
2839
  ]
2717
2840
  },
2718
2841
  run.runId
@@ -2720,7 +2843,7 @@ function IssueManagerRunPanels({
2720
2843
  ] }),
2721
2844
  /* @__PURE__ */ jsxs9("section", { className: "rounded-lg border border-border-1 bg-transparent px-4 py-4", children: [
2722
2845
  /* @__PURE__ */ jsx9("h4", { className: "mb-3 text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.outputs") }),
2723
- outputs.length === 0 ? /* @__PURE__ */ jsx9("p", { className: "text-sm leading-5 text-text-secondary", children: copy.t("messages.noOutputs") }) : /* @__PURE__ */ jsx9("div", { className: "grid gap-2.5", children: outputs.map((output) => /* @__PURE__ */ jsxs9(
2846
+ outputs.length === 0 ? /* @__PURE__ */ jsx9("p", { className: "text-sm leading-5 text-[var(--text-secondary)]", children: copy.t("messages.noOutputs") }) : /* @__PURE__ */ jsx9("div", { className: "grid gap-2.5", children: outputs.map((output) => /* @__PURE__ */ jsxs9(
2724
2847
  "button",
2725
2848
  {
2726
2849
  className: "rounded-lg border border-[var(--border-2)] bg-transparent px-3.5 py-3 text-left transition-colors hover:bg-transparency-hover",
@@ -2734,7 +2857,7 @@ function IssueManagerRunPanels({
2734
2857
  },
2735
2858
  children: [
2736
2859
  /* @__PURE__ */ jsx9("p", { className: "truncate text-sm font-semibold leading-5 text-[var(--text-primary)]", children: output.displayName }),
2737
- /* @__PURE__ */ jsx9("p", { className: "mt-1 truncate text-xs leading-[1.55] text-text-secondary", children: output.path })
2860
+ /* @__PURE__ */ jsx9("p", { className: "mt-1 truncate text-xs leading-[1.55] text-[var(--text-secondary)]", children: output.path })
2738
2861
  ]
2739
2862
  },
2740
2863
  output.outputId
@@ -2759,26 +2882,22 @@ function IssueManagerBottomBar({
2759
2882
  return /* @__PURE__ */ jsx10("div", { className: "border-t border-[var(--border-1)] bg-transparent px-6 py-4 backdrop-blur", children: /* @__PURE__ */ jsxs10(
2760
2883
  "div",
2761
2884
  {
2762
- className: cn5(
2885
+ className: cn7(
2763
2886
  "flex gap-3",
2764
- isNarrowLayout ? "flex-col items-stretch" : "items-center justify-end"
2887
+ isNarrowLayout ? "flex-wrap items-center justify-end" : "items-center justify-end"
2765
2888
  ),
2766
2889
  children: [
2767
2890
  /* @__PURE__ */ jsx10(
2768
2891
  IssueManagerRunActionTrigger,
2769
2892
  {
2770
2893
  controller,
2771
- disabled: !selectedTask,
2772
- triggerClassName: cn5(
2773
- "rounded-xl border-[var(--border-1)] bg-[var(--transparency-block)] px-4 py-2",
2774
- isNarrowLayout ? "w-full" : "min-w-[14rem]"
2775
- )
2894
+ disabled: !selectedTask
2776
2895
  }
2777
2896
  ),
2778
2897
  controller.canInviteCollaborators ? /* @__PURE__ */ jsx10(
2779
2898
  Button8,
2780
2899
  {
2781
- className: cn5("px-4", isNarrowLayout && "w-full"),
2900
+ className: "px-4",
2782
2901
  disabled: !selectedIssue,
2783
2902
  size: "dialog",
2784
2903
  type: "button",
@@ -2796,9 +2915,9 @@ function IssueManagerBottomBar({
2796
2915
  // src/ui/internal/shell/IssueManagerFloatingNotice.tsx
2797
2916
  import {
2798
2917
  FailedFilledIcon,
2799
- Spinner,
2918
+ Spinner as Spinner2,
2800
2919
  toastVariants,
2801
- cn as cn6
2920
+ cn as cn8
2802
2921
  } from "@nextop-os/ui-system";
2803
2922
  import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
2804
2923
  function IssueManagerFloatingNotice({
@@ -2810,14 +2929,14 @@ function IssueManagerFloatingNotice({
2810
2929
  {
2811
2930
  "aria-busy": notice.isLoading,
2812
2931
  "aria-live": variant === "destructive" ? "assertive" : "polite",
2813
- className: cn6(
2932
+ className: cn8(
2814
2933
  toastVariants({ variant }),
2815
2934
  "w-fit max-w-[min(72vw,40rem)] px-4 py-3 shadow-lg"
2816
2935
  ),
2817
2936
  role: variant === "destructive" ? "alert" : "status",
2818
2937
  children: /* @__PURE__ */ jsxs11("div", { className: "flex min-w-0 max-w-full items-center gap-[6px] whitespace-nowrap text-sm font-normal leading-normal", children: [
2819
2938
  notice.isLoading ? /* @__PURE__ */ jsx11(
2820
- Spinner,
2939
+ Spinner2,
2821
2940
  {
2822
2941
  className: "shrink-0 text-current",
2823
2942
  size: 16,
@@ -2832,7 +2951,7 @@ function IssueManagerFloatingNotice({
2832
2951
  }
2833
2952
 
2834
2953
  // src/ui/internal/shell/IssueManagerSidebar.tsx
2835
- import { cn as cn8 } from "@nextop-os/ui-system";
2954
+ import { cn as cn10 } from "@nextop-os/ui-system";
2836
2955
 
2837
2956
  // src/ui/internal/shell/IssueManagerSidebarSections.tsx
2838
2957
  import {
@@ -2843,7 +2962,7 @@ import {
2843
2962
  Input as Input3,
2844
2963
  ScrollArea as ScrollArea3,
2845
2964
  UnderlineTabs,
2846
- cn as cn7
2965
+ cn as cn9
2847
2966
  } from "@nextop-os/ui-system";
2848
2967
 
2849
2968
  // src/ui/internal/shell/IssueManagerShellState.ts
@@ -2857,7 +2976,7 @@ var issueManagerStatusFilters = [
2857
2976
  "canceled"
2858
2977
  ];
2859
2978
  function resolveIssueManagerSidebarViewState(input) {
2860
- if (input.issues.isLoading && input.issues.value.length === 0) {
2979
+ if (input.issues.isLoading && input.issues.value.length === 0 && input.issues.hasResolved !== true) {
2861
2980
  return {
2862
2981
  kind: "loading"
2863
2982
  };
@@ -2898,6 +3017,20 @@ function buildIssueManagerStatusCounts(issues) {
2898
3017
  }
2899
3018
  return counts;
2900
3019
  }
3020
+ function resolveIssueManagerStatusCounts(input) {
3021
+ return input.statusCounts ? mapIssueManagerStatusCounts(input.statusCounts) : buildIssueManagerStatusCounts(input.value);
3022
+ }
3023
+ function mapIssueManagerStatusCounts(counts) {
3024
+ return {
3025
+ all: counts.all,
3026
+ canceled: counts.canceled,
3027
+ completed: counts.completed,
3028
+ failed: counts.failed,
3029
+ not_started: counts.notStarted,
3030
+ pending_acceptance: counts.pendingAcceptance,
3031
+ running: counts.running
3032
+ };
3033
+ }
2901
3034
  function resolveIssueManagerShellContentViewState(input) {
2902
3035
  const isIssueEditing = input.issueEditorMode !== "read";
2903
3036
  const isTaskCreating = !isIssueEditing && input.taskEditorMode === "create";
@@ -2978,11 +3111,11 @@ function IssueManagerSidebarBody({
2978
3111
  return /* @__PURE__ */ jsx12(
2979
3112
  ScrollArea3,
2980
3113
  {
2981
- className: cn7("min-h-0", isNarrowLayout ? "flex-none" : "h-full flex-1"),
3114
+ className: cn9("min-h-0", isNarrowLayout ? "flex-none" : "h-full flex-1"),
2982
3115
  children: /* @__PURE__ */ jsx12(
2983
3116
  "div",
2984
3117
  {
2985
- className: cn7(
3118
+ className: cn9(
2986
3119
  "flex min-h-full flex-col gap-2.5 px-4 pt-1.5 pb-4",
2987
3120
  isNarrowLayout ? "min-h-0" : "h-full"
2988
3121
  ),
@@ -3060,7 +3193,7 @@ function IssueManagerSearchField({
3060
3193
  Input3,
3061
3194
  {
3062
3195
  "aria-label": placeholder,
3063
- className: cn7(
3196
+ className: cn9(
3064
3197
  "box-border h-8 min-h-8 rounded-md border-0 bg-[var(--transparency-block)] px-3 text-sm font-normal leading-normal text-[var(--text-primary)] shadow-none outline-none ring-0 transition-colors placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:border-0 focus:bg-[var(--transparency-hover)] focus-visible:border-0 focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 focus-visible:ring-offset-0 disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100",
3065
3198
  "[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none",
3066
3199
  value ? "pr-9" : "pr-3"
@@ -3096,7 +3229,7 @@ function IssueManagerSidebarIssueList({
3096
3229
  return /* @__PURE__ */ jsx12(
3097
3230
  "div",
3098
3231
  {
3099
- className: cn7(
3232
+ className: cn9(
3100
3233
  "flex gap-2.5",
3101
3234
  isNarrowLayout ? "flex-row flex-nowrap items-start overflow-x-auto overflow-y-hidden [scrollbar-width:none] [&::-webkit-scrollbar]:hidden" : "flex-col"
3102
3235
  ),
@@ -3124,7 +3257,7 @@ function IssueManagerSidebarItem({
3124
3257
  return /* @__PURE__ */ jsxs12(
3125
3258
  "button",
3126
3259
  {
3127
- className: cn7(
3260
+ className: cn9(
3128
3261
  "rounded-lg border px-3.5 py-3.5 text-left transition-colors",
3129
3262
  isNarrowLayout ? "h-24 max-h-24 min-h-24 w-[clamp(220px,58vw,320px)] flex-[0_0_clamp(220px,58vw,320px)] overflow-hidden" : "w-full",
3130
3263
  selected ? "border-[var(--border-1)] bg-[var(--background-fronted)]" : "border-[var(--border-1)] bg-transparent hover:bg-[var(--transparency-block)]"
@@ -3137,7 +3270,7 @@ function IssueManagerSidebarItem({
3137
3270
  /* @__PURE__ */ jsx12("p", { className: "text-[12px] leading-[1.55] text-[var(--text-secondary)]", children: formatIssueManagerDate(issue.updatedAtUnix ?? issue.createdAtUnix) }),
3138
3271
  /* @__PURE__ */ jsx12("p", { className: "line-clamp-4 text-[14px] font-semibold leading-[1.35rem] text-[var(--text-primary)]", children: issue.title })
3139
3272
  ] }),
3140
- /* @__PURE__ */ jsx12(Badge5, { className: "rounded-full border-transparent bg-[var(--transparency-block)] px-2 py-1 text-[11px] text-[var(--text-secondary)]", children: resolveIssueManagerStatusLabel(copy, issue.status) })
3273
+ /* @__PURE__ */ jsx12(Badge5, { className: "shrink-0", variant: "secondary", children: resolveIssueManagerStatusLabel(copy, issue.status) })
3141
3274
  ] }),
3142
3275
  /* @__PURE__ */ jsx12("div", { className: "mt-2 text-[12px] leading-[1.55] text-[var(--text-secondary)]", children: copy.t("labels.taskCount", { count: issue.taskCount ?? 0 }) })
3143
3276
  ]
@@ -3151,14 +3284,14 @@ function IssueManagerSidebarLoadingState({
3151
3284
  "div",
3152
3285
  {
3153
3286
  "aria-hidden": "true",
3154
- className: cn7(
3287
+ className: cn9(
3155
3288
  "gap-2.5",
3156
3289
  isNarrowLayout ? "flex flex-row flex-nowrap overflow-x-hidden" : "grid"
3157
3290
  ),
3158
3291
  children: Array.from({ length: 4 }, (_, index) => /* @__PURE__ */ jsxs12(
3159
3292
  "div",
3160
3293
  {
3161
- className: cn7(
3294
+ className: cn9(
3162
3295
  "rounded-lg bg-transparent px-3.5 py-3.5",
3163
3296
  isNarrowLayout && "h-24 max-h-24 min-h-24 w-[clamp(220px,58vw,320px)] flex-[0_0_clamp(220px,58vw,320px)]"
3164
3297
  ),
@@ -3182,7 +3315,7 @@ function IssueManagerSidebarEmptyState({
3182
3315
  return /* @__PURE__ */ jsxs12(
3183
3316
  "div",
3184
3317
  {
3185
- className: cn7(
3318
+ className: cn9(
3186
3319
  "relative flex flex-1 flex-col items-center justify-center self-stretch overflow-hidden p-0 text-center",
3187
3320
  isNarrowLayout ? "h-24 max-h-24 min-h-24 w-full flex-[0_0_100%]" : "min-h-full"
3188
3321
  ),
@@ -3190,7 +3323,7 @@ function IssueManagerSidebarEmptyState({
3190
3323
  /* @__PURE__ */ jsx12(
3191
3324
  "p",
3192
3325
  {
3193
- className: cn7(
3326
+ className: cn9(
3194
3327
  "text-sm font-semibold leading-5 text-[var(--text-primary)]",
3195
3328
  tone === "destructive" ? "text-[var(--state-danger)]" : "text-[var(--text-primary)]"
3196
3329
  ),
@@ -3211,7 +3344,7 @@ function IssueManagerSidebarErrorState({
3211
3344
  return /* @__PURE__ */ jsxs12(
3212
3345
  "div",
3213
3346
  {
3214
- className: cn7(
3347
+ className: cn9(
3215
3348
  "relative flex flex-1 flex-col items-center justify-center self-stretch overflow-hidden px-4 py-6 text-center",
3216
3349
  isNarrowLayout ? "h-24 max-h-24 min-h-24 w-full flex-[0_0_100%]" : "min-h-full"
3217
3350
  ),
@@ -3275,10 +3408,10 @@ function IssueManagerSidebar({
3275
3408
  "aside",
3276
3409
  {
3277
3410
  "aria-hidden": isCollapsed ? "true" : void 0,
3278
- className: cn8(
3279
- "absolute top-0 left-0 z-10 isolate flex h-full w-[var(--issue-manager-sidebar-width)] min-h-0 flex-col overflow-hidden bg-transparent will-change-[transform,opacity] transition-[transform,opacity,border-color] duration-[220ms] ease-[cubic-bezier(0.22,1,0.36,1)] after:pointer-events-none after:absolute after:inset-0 after:z-[1] after:bg-[color-mix(in_srgb,var(--background-panel)_88%,transparent)] after:opacity-0 after:transition-opacity after:duration-[180ms] motion-reduce:transition-none",
3411
+ className: cn10(
3412
+ "relative isolate flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-transparent opacity-100 transition-[border-color] duration-[140ms] ease-in-out after:pointer-events-none after:absolute after:inset-0 after:z-[1] after:bg-[color-mix(in_srgb,var(--background-panel)_88%,transparent)] after:opacity-0 after:transition-opacity after:duration-[160ms] after:delay-[70ms] motion-reduce:transition-none motion-reduce:after:transition-none [&>*]:transition-[opacity,filter] [&>*]:duration-[160ms] [&>*]:delay-[70ms] [&>*]:ease-in-out motion-reduce:[&>*]:transition-none",
3280
3413
  isNarrowLayout ? "border-b border-[var(--border-1)]" : "border-r border-[var(--border-1)]",
3281
- isCollapsed && "pointer-events-none -translate-x-full border-r-transparent opacity-0 after:opacity-100 [&>*]:opacity-0 [&>*]:transition-opacity [&>*]:duration-[120ms] motion-reduce:transform-none"
3414
+ isCollapsed && "pointer-events-none border-r-transparent after:opacity-100 after:delay-0 [&>*]:opacity-0 [&>*]:blur-[1px] [&>*]:delay-0 motion-reduce:[&>*]:blur-none"
3282
3415
  ),
3283
3416
  inert: isCollapsed ? true : void 0,
3284
3417
  children: [
@@ -3304,7 +3437,7 @@ function IssueManagerSidebar({
3304
3437
  /* @__PURE__ */ jsx13(
3305
3438
  "div",
3306
3439
  {
3307
- className: cn8(
3440
+ className: cn10(
3308
3441
  "relative flex min-h-0 flex-col",
3309
3442
  isNarrowLayout ? "flex-none" : "flex-1"
3310
3443
  ),
@@ -3337,18 +3470,8 @@ function IssueManagerSidebar({
3337
3470
  }
3338
3471
 
3339
3472
  // src/ui/internal/shell/IssueManagerTaskComposerPane.tsx
3340
- import {
3341
- Button as Button10,
3342
- Input as Input4,
3343
- Select as Select2,
3344
- SelectContent as SelectContent2,
3345
- SelectItem as SelectItem2,
3346
- SelectTrigger as SelectTrigger2,
3347
- SelectValue,
3348
- UploadIcon
3349
- } from "@nextop-os/ui-system";
3473
+ import { Button as Button10, Input as Input4 } from "@nextop-os/ui-system";
3350
3474
  import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
3351
- var taskPriorityOptions = ["high", "medium", "low"];
3352
3475
  function IssueManagerTaskComposerPane({
3353
3476
  controller,
3354
3477
  onCancel,
@@ -3356,118 +3479,84 @@ function IssueManagerTaskComposerPane({
3356
3479
  }) {
3357
3480
  const copy = controller.copy;
3358
3481
  const isTaskTitleMissing = controller.taskDraft.title.trim().length === 0;
3359
- const showAttachmentActions = controller.canUploadWorkspaceFiles || controller.canReferenceWorkspaceFiles;
3360
3482
  return /* @__PURE__ */ jsxs14("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: [
3361
- /* @__PURE__ */ jsx14("div", { className: "min-h-0 flex-1 overflow-y-auto px-7 py-8", children: /* @__PURE__ */ jsxs14("div", { className: "flex w-full max-w-[76rem] flex-col gap-8", children: [
3362
- /* @__PURE__ */ jsxs14("div", { className: "flex items-start justify-between gap-4", children: [
3363
- /* @__PURE__ */ jsx14("h2", { className: "text-[17px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: copy.t("actions.addSubtask") }),
3364
- /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-3", children: [
3365
- /* @__PURE__ */ jsx14("span", { className: "text-sm text-text-secondary", children: copy.t("labels.priority") }),
3366
- /* @__PURE__ */ jsxs14(
3367
- Select2,
3368
- {
3369
- value: controller.taskDraft.priority,
3370
- onValueChange: (value) => controller.setTaskPriority(value),
3371
- children: [
3372
- /* @__PURE__ */ jsx14(
3373
- SelectTrigger2,
3374
- {
3375
- "aria-label": copy.t("labels.priority"),
3376
- className: "min-w-28 rounded-lg border-border-1 bg-transparency-block text-sm",
3377
- children: /* @__PURE__ */ jsx14(SelectValue, {})
3378
- }
3379
- ),
3380
- /* @__PURE__ */ jsx14(SelectContent2, { style: { zIndex: "var(--z-panel-popover)" }, children: taskPriorityOptions.map((priority) => /* @__PURE__ */ jsx14(SelectItem2, { value: priority, children: resolveIssueManagerPriorityLabel(copy, priority) }, priority)) })
3381
- ]
3382
- }
3383
- )
3384
- ] })
3385
- ] }),
3386
- /* @__PURE__ */ jsxs14("label", { className: "grid gap-2", children: [
3387
- /* @__PURE__ */ jsx14("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.title") }),
3388
- /* @__PURE__ */ jsx14(
3389
- Input4,
3483
+ /* @__PURE__ */ jsx14("div", { className: "flex min-h-0 flex-1 flex-col gap-[14px] overflow-y-auto px-7 py-8", children: /* @__PURE__ */ jsxs14("div", { className: "flex w-full min-w-0 flex-col gap-3", children: [
3484
+ /* @__PURE__ */ jsx14(
3485
+ "div",
3486
+ {
3487
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
3488
+ children: /* @__PURE__ */ jsx14("h2", { className: "m-0 text-[17px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: copy.t("actions.addSubtask") })
3489
+ }
3490
+ ),
3491
+ /* @__PURE__ */ jsxs14("div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
3492
+ /* @__PURE__ */ jsxs14(
3493
+ "label",
3494
+ {
3495
+ className: `flex w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
3496
+ children: [
3497
+ /* @__PURE__ */ jsx14("span", { className: "leading-5", children: copy.t("labels.title") }),
3498
+ /* @__PURE__ */ jsx14(
3499
+ Input4,
3500
+ {
3501
+ placeholder: copy.t("composer.subtaskTitlePlaceholder"),
3502
+ variant: "md",
3503
+ value: controller.taskDraft.title,
3504
+ onChange: (event) => controller.setTaskTitle(event.target.value)
3505
+ }
3506
+ )
3507
+ ]
3508
+ }
3509
+ ),
3510
+ /* @__PURE__ */ jsxs14(
3511
+ "div",
3390
3512
  {
3391
- className: "h-10 rounded-lg border-0 bg-transparency-block px-3 text-sm font-semibold text-[var(--text-primary)] shadow-none placeholder:text-[var(--text-placeholder)]",
3392
- placeholder: copy.t("composer.subtaskTitlePlaceholder"),
3393
- value: controller.taskDraft.title,
3394
- onChange: (event) => controller.setTaskTitle(event.target.value)
3513
+ className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
3514
+ children: [
3515
+ /* @__PURE__ */ jsx14("span", { className: "leading-5", children: copy.t("labels.requirementDescription") }),
3516
+ /* @__PURE__ */ jsx14(
3517
+ IssueManagerRichTextTextarea,
3518
+ {
3519
+ controller,
3520
+ surface: "task",
3521
+ textareaClassName: "min-h-[180px] resize-none",
3522
+ placeholder: copy.t("composer.subtaskContentPlaceholder"),
3523
+ value: controller.taskDraft.content,
3524
+ onChange: controller.setTaskContent
3525
+ }
3526
+ )
3527
+ ]
3395
3528
  }
3396
3529
  )
3397
- ] }),
3398
- /* @__PURE__ */ jsxs14("section", { className: "grid gap-2", children: [
3399
- /* @__PURE__ */ jsx14("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.requirementDescription") }),
3400
- /* @__PURE__ */ jsxs14("div", { className: "overflow-hidden rounded-lg border border-border-1 bg-transparency-block", children: [
3530
+ ] })
3531
+ ] }) }),
3532
+ /* @__PURE__ */ jsx14(
3533
+ "div",
3534
+ {
3535
+ className: `shrink-0 border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
3536
+ children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-end gap-3", children: [
3401
3537
  /* @__PURE__ */ jsx14(
3402
- IssueManagerRichTextTextarea,
3538
+ Button10,
3403
3539
  {
3404
- controller,
3405
- surface: "task",
3406
- textareaClassName: "min-h-[20rem] w-full resize-none border-0 bg-transparent px-4 py-3 text-sm leading-5 text-[var(--text-primary)] outline-none placeholder:text-[var(--text-placeholder)]",
3407
- placeholder: copy.t("composer.subtaskContentPlaceholder"),
3408
- value: controller.taskDraft.content,
3409
- onChange: controller.setTaskContent
3540
+ size: "default",
3541
+ type: "button",
3542
+ variant: "secondary",
3543
+ onClick: onCancel,
3544
+ children: copy.t("actions.cancel")
3410
3545
  }
3411
3546
  ),
3412
- showAttachmentActions ? /* @__PURE__ */ jsxs14("div", { className: "flex flex-wrap items-center gap-3 border-t border-border-1 px-4 py-3", children: [
3413
- controller.canUploadWorkspaceFiles ? /* @__PURE__ */ jsxs14(
3414
- Button10,
3415
- {
3416
- className: "px-3",
3417
- size: "dialog",
3418
- type: "button",
3419
- variant: "secondary",
3420
- onClick: () => {
3421
- void controller.uploadReferences("task", "files");
3422
- },
3423
- children: [
3424
- /* @__PURE__ */ jsx14(UploadIcon, { size: 16 }),
3425
- copy.t("actions.uploadFiles")
3426
- ]
3427
- }
3428
- ) : null,
3429
- controller.canUploadWorkspaceFiles ? /* @__PURE__ */ jsxs14(
3430
- Button10,
3431
- {
3432
- className: "px-3",
3433
- size: "dialog",
3434
- type: "button",
3435
- variant: "secondary",
3436
- onClick: () => {
3437
- void controller.uploadReferences("task", "folder");
3438
- },
3439
- children: [
3440
- /* @__PURE__ */ jsx14(UploadIcon, { size: 16 }),
3441
- copy.t("actions.uploadFolder")
3442
- ]
3443
- }
3444
- ) : null
3445
- ] }) : null
3547
+ /* @__PURE__ */ jsx14(
3548
+ Button10,
3549
+ {
3550
+ disabled: !selectedIssue || isTaskTitleMissing,
3551
+ size: "default",
3552
+ type: "button",
3553
+ onClick: () => void controller.saveTask(),
3554
+ children: copy.t("actions.saveSubtask")
3555
+ }
3556
+ )
3446
3557
  ] })
3447
- ] })
3448
- ] }) }),
3449
- /* @__PURE__ */ jsx14("div", { className: "shrink-0 border-t border-border-1 px-7 py-4", children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-end gap-3", children: [
3450
- /* @__PURE__ */ jsx14(
3451
- Button10,
3452
- {
3453
- size: "default",
3454
- type: "button",
3455
- variant: "secondary",
3456
- onClick: onCancel,
3457
- children: copy.t("actions.cancel")
3458
- }
3459
- ),
3460
- /* @__PURE__ */ jsx14(
3461
- Button10,
3462
- {
3463
- disabled: !selectedIssue || isTaskTitleMissing,
3464
- size: "default",
3465
- type: "button",
3466
- onClick: () => void controller.saveTask(),
3467
- children: copy.t("actions.saveSubtask")
3468
- }
3469
- )
3470
- ] }) })
3558
+ }
3559
+ )
3471
3560
  ] });
3472
3561
  }
3473
3562
 
@@ -3484,16 +3573,16 @@ import {
3484
3573
  DropdownMenuItem,
3485
3574
  DropdownMenuTrigger,
3486
3575
  Input as Input5,
3487
- Select as Select3,
3488
- SelectContent as SelectContent3,
3489
- SelectItem as SelectItem3,
3490
- SelectTrigger as SelectTrigger3,
3491
- SelectValue as SelectValue2,
3492
- SparkIcon as SparkIcon2
3576
+ Select as Select2,
3577
+ SelectContent as SelectContent2,
3578
+ SelectItem as SelectItem2,
3579
+ SelectTrigger as SelectTrigger2,
3580
+ SelectValue,
3581
+ CapabilityIcon
3493
3582
  } from "@nextop-os/ui-system";
3494
3583
 
3495
3584
  // src/ui/internal/content/IssueManagerContextSection.tsx
3496
- import { Button as Button11, DirectoryIcon as DirectoryIcon3, FileIcon as FileIcon3 } from "@nextop-os/ui-system";
3585
+ import { Button as Button11, DirectoryIcon, FileIcon as FileIcon3 } from "@nextop-os/ui-system";
3497
3586
  import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
3498
3587
  function IssueManagerContextSection({
3499
3588
  copy,
@@ -3518,7 +3607,7 @@ function IssueManagerContextSection({
3518
3607
  }
3519
3608
  )
3520
3609
  ] }),
3521
- refs.length === 0 ? /* @__PURE__ */ jsx15("p", { className: "text-sm leading-5 text-text-secondary", children: emptyLabel }) : /* @__PURE__ */ jsx15("div", { className: "grid gap-2.5", children: refs.map((ref) => /* @__PURE__ */ jsxs15(
3610
+ refs.length === 0 ? /* @__PURE__ */ jsx15("p", { className: "text-sm leading-5 text-[var(--text-secondary)]", children: emptyLabel }) : /* @__PURE__ */ jsx15("div", { className: "grid gap-2.5", children: refs.map((ref) => /* @__PURE__ */ jsxs15(
3522
3611
  "div",
3523
3612
  {
3524
3613
  className: "flex items-center justify-between gap-3 rounded-lg border border-[var(--border-2)] bg-transparent px-3.5 py-3",
@@ -3537,21 +3626,21 @@ function IssueManagerContextSection({
3537
3626
  },
3538
3627
  children: [
3539
3628
  ref.path.endsWith("/") ? /* @__PURE__ */ jsx15(
3540
- DirectoryIcon3,
3629
+ DirectoryIcon,
3541
3630
  {
3542
- className: "shrink-0 text-text-secondary",
3631
+ className: "shrink-0 text-[var(--text-secondary)]",
3543
3632
  size: 16
3544
3633
  }
3545
3634
  ) : /* @__PURE__ */ jsx15(
3546
3635
  FileIcon3,
3547
3636
  {
3548
- className: "shrink-0 text-text-secondary",
3637
+ className: "shrink-0 text-[var(--text-secondary)]",
3549
3638
  size: 16
3550
3639
  }
3551
3640
  ),
3552
3641
  /* @__PURE__ */ jsxs15("span", { className: "min-w-0", children: [
3553
3642
  /* @__PURE__ */ jsx15("span", { className: "block truncate text-sm font-semibold leading-5 text-[var(--text-primary)]", children: ref.displayName }),
3554
- /* @__PURE__ */ jsx15("span", { className: "block truncate text-xs leading-[1.55] text-text-secondary", children: ref.path })
3643
+ /* @__PURE__ */ jsx15("span", { className: "block truncate text-xs leading-[1.55] text-[var(--text-secondary)]", children: ref.path })
3555
3644
  ] })
3556
3645
  ]
3557
3646
  }
@@ -3559,7 +3648,7 @@ function IssueManagerContextSection({
3559
3648
  /* @__PURE__ */ jsx15(
3560
3649
  Button11,
3561
3650
  {
3562
- className: "h-7 rounded-md px-2 text-[13px] font-semibold text-text-secondary hover:text-[var(--text-primary)]",
3651
+ className: "h-7 rounded-md px-2 text-[13px] font-semibold text-[var(--text-secondary)] hover:text-[var(--text-primary)]",
3563
3652
  size: "sm",
3564
3653
  type: "button",
3565
3654
  variant: "ghost",
@@ -3608,7 +3697,7 @@ function canIssueManagerSaveTask(input) {
3608
3697
 
3609
3698
  // src/ui/internal/shell/IssueManagerTaskDrawerSections.tsx
3610
3699
  import { Fragment, jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
3611
- var taskPriorityOptions2 = ["high", "medium", "low"];
3700
+ var taskPriorityOptions = ["high", "medium", "low"];
3612
3701
  function IssueManagerTaskDrawerHeader({
3613
3702
  controller,
3614
3703
  selectedTask,
@@ -3619,10 +3708,10 @@ function IssueManagerTaskDrawerHeader({
3619
3708
  return /* @__PURE__ */ jsxs16("div", { className: "flex items-start justify-between gap-4 border-b border-border-1 px-7 py-5", children: [
3620
3709
  /* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
3621
3710
  view.showTaskMetadata && selectedTask ? /* @__PURE__ */ jsx16("div", { className: "grid min-w-0 gap-2", children: /* @__PURE__ */ jsx16("h3", { className: "line-clamp-3 text-sm font-semibold leading-[1.35] text-[var(--text-primary)]", children: view.title }) }) : /* @__PURE__ */ jsx16("h3", { className: "line-clamp-2 text-[17px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: view.title }),
3622
- view.showTaskMetadata && selectedTask ? /* @__PURE__ */ jsxs16("div", { className: "mt-2 flex min-w-0 items-center overflow-hidden text-sm leading-[1.55] text-text-secondary", children: [
3711
+ view.showTaskMetadata && selectedTask ? /* @__PURE__ */ jsxs16("div", { className: "mt-2 flex min-w-0 items-center overflow-hidden text-sm leading-[1.55] text-[var(--text-secondary)]", children: [
3623
3712
  /* @__PURE__ */ jsx16(Badge6, { className: "shrink-0 rounded-full border-transparent bg-[var(--accent-bg)] px-2.5 py-1 text-xs text-[var(--text-primary)]", children: resolveIssueManagerStatusLabel(copy, selectedTask.status) }),
3624
3713
  /* @__PURE__ */ jsx16("span", { className: "mx-3 h-[13px] w-px shrink-0 bg-border-1" }),
3625
- /* @__PURE__ */ jsx16(Badge6, { className: "shrink-0 rounded-full border-transparent bg-transparency-block px-2.5 py-1 text-xs text-text-secondary", children: resolveIssueManagerPriorityLabel(copy, selectedTask.priority) }),
3714
+ /* @__PURE__ */ jsx16(Badge6, { className: "shrink-0 rounded-full border-transparent bg-transparency-block px-2.5 py-1 text-xs text-[var(--text-secondary)]", children: resolveIssueManagerPriorityLabel(copy, selectedTask.priority) }),
3626
3715
  /* @__PURE__ */ jsx16("span", { className: "mx-3 h-[13px] w-px shrink-0 bg-border-1" }),
3627
3716
  /* @__PURE__ */ jsxs16("span", { children: [
3628
3717
  copy.t("labels.updatedAt"),
@@ -3648,7 +3737,7 @@ function IssueManagerTaskDrawerHeader({
3648
3737
  "span",
3649
3738
  {
3650
3739
  "aria-hidden": "true",
3651
- className: "text-base leading-none tracking-[0.18em] text-text-secondary",
3740
+ className: "text-base leading-none tracking-[0.18em] text-[var(--text-secondary)]",
3652
3741
  children: "..."
3653
3742
  }
3654
3743
  )
@@ -3727,65 +3816,89 @@ function IssueManagerTaskDrawerEditBody({
3727
3816
  const copy = controller.copy;
3728
3817
  return /* @__PURE__ */ jsxs16(Fragment, { children: [
3729
3818
  /* @__PURE__ */ jsxs16("div", { className: "grid gap-5", children: [
3730
- /* @__PURE__ */ jsxs16("label", { className: "grid gap-2", children: [
3731
- /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.title") }),
3732
- /* @__PURE__ */ jsx16(
3733
- Input5,
3734
- {
3735
- className: "h-10 rounded-lg border-border-1 bg-transparency-block text-sm font-semibold text-[var(--text-primary)] shadow-none placeholder:text-[var(--text-placeholder)]",
3736
- placeholder: copy.t("composer.taskTitlePlaceholder"),
3737
- value: controller.taskDraft.title,
3738
- onChange: (event) => controller.setTaskTitle(event.target.value)
3739
- }
3740
- )
3741
- ] }),
3742
- /* @__PURE__ */ jsx16("div", { className: "flex flex-wrap items-center gap-3", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
3743
- /* @__PURE__ */ jsx16("span", { className: "text-sm font-medium text-text-secondary", children: copy.t("labels.priority") }),
3744
- /* @__PURE__ */ jsxs16(
3745
- Select3,
3746
- {
3747
- value: controller.taskDraft.priority,
3748
- onValueChange: (value) => controller.setTaskPriority(value),
3749
- children: [
3750
- /* @__PURE__ */ jsx16(
3751
- SelectTrigger3,
3752
- {
3753
- "aria-label": copy.t("labels.priority"),
3754
- className: "min-w-28 rounded-lg border-border-1 bg-transparency-block text-sm",
3755
- children: /* @__PURE__ */ jsx16(SelectValue2, {})
3756
- }
3757
- ),
3758
- /* @__PURE__ */ jsx16(SelectContent3, { style: { zIndex: "var(--z-panel-popover)" }, children: taskPriorityOptions2.map((priority) => /* @__PURE__ */ jsx16(SelectItem3, { value: priority, children: resolveIssueManagerPriorityLabel(copy, priority) }, priority)) })
3759
- ]
3760
- }
3761
- )
3762
- ] }) }),
3763
- /* @__PURE__ */ jsxs16("div", { className: "grid gap-2", children: [
3764
- /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.content") }),
3765
- /* @__PURE__ */ jsx16(
3766
- IssueManagerRichTextTextarea,
3767
- {
3768
- controller,
3769
- surface: "task",
3770
- textareaClassName: "min-h-[12rem] w-full resize-none rounded-lg border border-border-1 bg-transparency-block px-4 py-3 text-sm leading-5 text-[var(--text-primary)] outline-none placeholder:text-[var(--text-placeholder)]",
3771
- placeholder: copy.t("composer.taskContentPlaceholder"),
3772
- value: controller.taskDraft.content,
3773
- onChange: controller.setTaskContent
3774
- }
3775
- )
3776
- ] })
3819
+ /* @__PURE__ */ jsxs16(
3820
+ "label",
3821
+ {
3822
+ className: `grid gap-2 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
3823
+ children: [
3824
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.title") }),
3825
+ /* @__PURE__ */ jsx16(
3826
+ Input5,
3827
+ {
3828
+ placeholder: copy.t("composer.taskTitlePlaceholder"),
3829
+ variant: "md",
3830
+ value: controller.taskDraft.title,
3831
+ onChange: (event) => controller.setTaskTitle(event.target.value)
3832
+ }
3833
+ )
3834
+ ]
3835
+ }
3836
+ ),
3837
+ /* @__PURE__ */ jsx16(
3838
+ "div",
3839
+ {
3840
+ className: `flex flex-wrap items-center gap-3 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
3841
+ children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
3842
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-medium text-[var(--text-secondary)]", children: copy.t("labels.priority") }),
3843
+ /* @__PURE__ */ jsxs16(
3844
+ Select2,
3845
+ {
3846
+ value: controller.taskDraft.priority,
3847
+ onValueChange: (value) => controller.setTaskPriority(value),
3848
+ children: [
3849
+ /* @__PURE__ */ jsx16(
3850
+ SelectTrigger2,
3851
+ {
3852
+ "aria-label": copy.t("labels.priority"),
3853
+ className: "min-w-28 rounded-lg border-border-1 bg-transparency-block text-sm",
3854
+ children: /* @__PURE__ */ jsx16(SelectValue, {})
3855
+ }
3856
+ ),
3857
+ /* @__PURE__ */ jsx16(SelectContent2, { style: { zIndex: "var(--z-panel-popover)" }, children: taskPriorityOptions.map((priority) => /* @__PURE__ */ jsx16(SelectItem2, { value: priority, children: resolveIssueManagerPriorityLabel(copy, priority) }, priority)) })
3858
+ ]
3859
+ }
3860
+ )
3861
+ ] })
3862
+ }
3863
+ ),
3864
+ /* @__PURE__ */ jsxs16(
3865
+ "div",
3866
+ {
3867
+ className: `grid gap-2 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
3868
+ children: [
3869
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.content") }),
3870
+ /* @__PURE__ */ jsx16(
3871
+ IssueManagerRichTextTextarea,
3872
+ {
3873
+ controller,
3874
+ surface: "task",
3875
+ textareaClassName: "min-h-[12rem] resize-none",
3876
+ placeholder: copy.t("composer.taskContentPlaceholder"),
3877
+ value: controller.taskDraft.content,
3878
+ onChange: controller.setTaskContent
3879
+ }
3880
+ )
3881
+ ]
3882
+ }
3883
+ )
3777
3884
  ] }),
3778
3885
  /* @__PURE__ */ jsx16(
3779
- IssueManagerContextSection,
3886
+ "div",
3780
3887
  {
3781
- copy,
3782
- emptyLabel: copy.t("messages.noTaskReferences"),
3783
- refs: taskRefs,
3784
- onAdd: () => {
3785
- void controller.attachReferences("task");
3786
- },
3787
- onOpen: controller.openReference,
3788
- onRemove: controller.removeContextRef
3888
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay3ClassName}`,
3889
+ children: /* @__PURE__ */ jsx16(
3890
+ IssueManagerContextSection,
3891
+ {
3892
+ copy,
3893
+ emptyLabel: copy.t("messages.noTaskReferences"),
3894
+ refs: taskRefs,
3895
+ onAdd: () => {
3896
+ void controller.attachReferences("task");
3897
+ },
3898
+ onOpen: controller.openReference,
3899
+ onRemove: controller.removeContextRef
3900
+ }
3901
+ )
3789
3902
  }
3790
3903
  ),
3791
3904
  !isCreate ? /* @__PURE__ */ jsx16(
@@ -3853,8 +3966,7 @@ function IssueManagerTaskDrawerFooter({
3853
3966
  IssueManagerRunActionTrigger,
3854
3967
  {
3855
3968
  controller,
3856
- iconSize: 15,
3857
- triggerClassName: "min-w-[11rem] rounded-lg border-border-1 bg-transparency-block px-3.5 py-2 text-sm"
3969
+ triggerClassName: "min-w-[11rem]"
3858
3970
  }
3859
3971
  ),
3860
3972
  controller.canInviteCollaborators ? /* @__PURE__ */ jsx16(
@@ -3872,48 +3984,54 @@ function IssueManagerTaskDrawerFooter({
3872
3984
  ] }) });
3873
3985
  }
3874
3986
  if (view.showEditFooter) {
3875
- return /* @__PURE__ */ jsx16("div", { className: "border-t border-border-1 px-7 py-4", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between gap-3", children: [
3876
- /* @__PURE__ */ jsx16("div", { className: "flex items-center gap-2", children: !view.isCreate && selectedTask ? /* @__PURE__ */ jsx16(
3877
- Button12,
3878
- {
3879
- size: "default",
3880
- type: "button",
3881
- variant: "destructive",
3882
- onClick: () => {
3883
- void controller.deleteTask();
3884
- },
3885
- children: copy.t("actions.deleteTask")
3886
- }
3887
- ) : null }),
3888
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
3889
- /* @__PURE__ */ jsx16(
3890
- Button12,
3891
- {
3892
- size: "default",
3893
- type: "button",
3894
- variant: "secondary",
3895
- onClick: () => controller.setTaskEditorMode("read"),
3896
- children: copy.t("actions.cancel")
3897
- }
3898
- ),
3899
- /* @__PURE__ */ jsxs16(
3900
- Button12,
3901
- {
3902
- disabled: canIssueManagerSaveTask({
3903
- selectedIssue,
3904
- view
3905
- }) === false,
3906
- size: "default",
3907
- type: "button",
3908
- onClick: () => void controller.saveTask(),
3909
- children: [
3910
- /* @__PURE__ */ jsx16(SparkIcon2, { size: 16 }),
3911
- copy.t("actions.saveTask")
3912
- ]
3913
- }
3914
- )
3915
- ] })
3916
- ] }) });
3987
+ return /* @__PURE__ */ jsx16(
3988
+ "div",
3989
+ {
3990
+ className: `border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
3991
+ children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between gap-3", children: [
3992
+ /* @__PURE__ */ jsx16("div", { className: "flex items-center gap-2", children: !view.isCreate && selectedTask ? /* @__PURE__ */ jsx16(
3993
+ Button12,
3994
+ {
3995
+ size: "default",
3996
+ type: "button",
3997
+ variant: "destructive",
3998
+ onClick: () => {
3999
+ void controller.deleteTask();
4000
+ },
4001
+ children: copy.t("actions.deleteTask")
4002
+ }
4003
+ ) : null }),
4004
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
4005
+ /* @__PURE__ */ jsx16(
4006
+ Button12,
4007
+ {
4008
+ size: "default",
4009
+ type: "button",
4010
+ variant: "secondary",
4011
+ onClick: () => controller.setTaskEditorMode("read"),
4012
+ children: copy.t("actions.cancel")
4013
+ }
4014
+ ),
4015
+ /* @__PURE__ */ jsxs16(
4016
+ Button12,
4017
+ {
4018
+ disabled: canIssueManagerSaveTask({
4019
+ selectedIssue,
4020
+ view
4021
+ }) === false,
4022
+ size: "default",
4023
+ type: "button",
4024
+ onClick: () => void controller.saveTask(),
4025
+ children: [
4026
+ /* @__PURE__ */ jsx16(CapabilityIcon, { size: 16 }),
4027
+ copy.t("actions.saveTask")
4028
+ ]
4029
+ }
4030
+ )
4031
+ ] })
4032
+ ] })
4033
+ }
4034
+ );
3917
4035
  }
3918
4036
  return null;
3919
4037
  }
@@ -3979,10 +4097,10 @@ function IssueManagerTaskDrawer({
3979
4097
 
3980
4098
  // src/ui/internal/shell/useIssueManagerShellView.ts
3981
4099
  import {
3982
- useEffect as useEffect6,
4100
+ useEffect as useEffect7,
3983
4101
  useEffectEvent as useEffectEvent3,
3984
4102
  useRef as useRef3,
3985
- useState as useState6
4103
+ useState as useState8
3986
4104
  } from "react";
3987
4105
  function useIssueManagerShellView({
3988
4106
  controller,
@@ -3991,15 +4109,15 @@ function useIssueManagerShellView({
3991
4109
  }) {
3992
4110
  const layoutRef = useRef3(null);
3993
4111
  const resizeRef = useRef3(null);
3994
- const [sidebarWidth, setSidebarWidth] = useState6(
4112
+ const [sidebarWidth, setSidebarWidth] = useState8(
3995
4113
  issueManagerSidebarDefaultWidth
3996
4114
  );
3997
- const [isNarrowLayout, setIsNarrowLayout] = useState6(false);
4115
+ const [isNarrowLayout, setIsNarrowLayout] = useState8(false);
3998
4116
  const dismissNotification = useEffectEvent3(() => {
3999
4117
  controller.dismissNotification();
4000
4118
  });
4001
4119
  const floatingNotice = controller.floatingNotice;
4002
- useEffect6(() => {
4120
+ useEffect7(() => {
4003
4121
  const publishLayout = () => {
4004
4122
  const width = layoutRef.current?.getBoundingClientRect().width ?? 0;
4005
4123
  if (!width) {
@@ -4022,7 +4140,7 @@ function useIssueManagerShellView({
4022
4140
  window.removeEventListener("resize", publishLayout);
4023
4141
  };
4024
4142
  }, []);
4025
- useEffect6(() => {
4143
+ useEffect7(() => {
4026
4144
  if (!floatingNotice) {
4027
4145
  return void 0;
4028
4146
  }
@@ -4043,7 +4161,7 @@ function useIssueManagerShellView({
4043
4161
  copy: controller.copy,
4044
4162
  issues: controller.issues
4045
4163
  });
4046
- const statusCounts = buildIssueManagerStatusCounts(controller.issues.value);
4164
+ const statusCounts = resolveIssueManagerStatusCounts(controller.issues);
4047
4165
  const isSidebarAutoCollapsed = isNarrowLayout;
4048
4166
  const isSidebarCollapsed = controller.nodeState.taskListCollapsed === true || isSidebarAutoCollapsed;
4049
4167
  return {
@@ -4052,6 +4170,7 @@ function useIssueManagerShellView({
4052
4170
  isNarrowLayout,
4053
4171
  layoutRef,
4054
4172
  layoutStyle: {
4173
+ gridTemplateColumns: isSidebarCollapsed ? "0 minmax(0, 1fr)" : "var(--issue-manager-sidebar-width) minmax(0, 1fr)",
4055
4174
  "--issue-manager-sidebar-width": `${sidebarWidth}px`
4056
4175
  },
4057
4176
  resizeHandle: {
@@ -4148,7 +4267,7 @@ function IssueManagerShell({
4148
4267
  return /* @__PURE__ */ jsxs18(
4149
4268
  "div",
4150
4269
  {
4151
- className: "relative min-h-0 flex-1 overflow-hidden bg-transparent",
4270
+ className: "relative grid min-h-0 flex-1 grid-rows-[minmax(0,1fr)] overflow-hidden bg-transparent transition-[grid-template-columns] duration-[180ms] ease-[cubic-bezier(0.4,0,0.2,1)] motion-reduce:transition-none",
4152
4271
  "data-issue-manager-sidebar-auto-collapsed": shellView.sidebar.isAutoCollapsed ? "true" : void 0,
4153
4272
  "data-issue-manager-sidebar-collapsed": shellView.sidebar.isCollapsed ? "true" : void 0,
4154
4273
  ref: shellView.layoutRef,
@@ -4166,7 +4285,7 @@ function IssueManagerShell({
4166
4285
  statusCounts: shellView.sidebar.statusCounts
4167
4286
  }
4168
4287
  ),
4169
- shellView.sidebar.isCollapsed ? null : /* @__PURE__ */ jsx18(
4288
+ shellView.sidebar.isAutoCollapsed ? null : /* @__PURE__ */ jsx18(
4170
4289
  "div",
4171
4290
  {
4172
4291
  "aria-label": controller.copy.t("labels.resizeIssueList"),
@@ -4174,7 +4293,10 @@ function IssueManagerShell({
4174
4293
  "aria-valuemax": shellView.resizeHandle.ariaValueMax,
4175
4294
  "aria-valuemin": shellView.resizeHandle.ariaValueMin,
4176
4295
  "aria-valuenow": shellView.resizeHandle.ariaValueNow,
4177
- className: "group absolute top-0 bottom-0 left-[calc(var(--issue-manager-sidebar-width)-6px)] z-20 w-3 cursor-col-resize touch-none",
4296
+ className: cn11(
4297
+ "group absolute top-0 bottom-0 left-[calc(var(--issue-manager-sidebar-width)-6px)] z-20 w-3 cursor-col-resize touch-none opacity-100 transition-[left,opacity] duration-[180ms,120ms] ease-[cubic-bezier(0.4,0,0.2,1),ease] motion-reduce:transition-none",
4298
+ shellView.sidebar.isCollapsed && "pointer-events-none left-[-6px] opacity-0"
4299
+ ),
4178
4300
  role: "separator",
4179
4301
  tabIndex: 0,
4180
4302
  onKeyDown: shellView.resizeHandle.onKeyDown,
@@ -4185,66 +4307,57 @@ function IssueManagerShell({
4185
4307
  children: /* @__PURE__ */ jsx18("span", { className: "absolute top-0 bottom-0 left-1/2 w-px -translate-x-1/2 bg-transparent transition-[background-color,width] duration-150 group-hover:w-0.5 group-hover:bg-[color-mix(in_srgb,var(--border-focus)_40%,transparent)] group-focus-visible:w-0.5 group-focus-visible:bg-[color-mix(in_srgb,var(--border-focus)_40%,transparent)]" })
4186
4308
  }
4187
4309
  ),
4188
- /* @__PURE__ */ jsxs18(
4189
- "div",
4190
- {
4191
- className: cn9(
4192
- "relative min-h-0 h-full overflow-hidden bg-transparent",
4193
- !shellView.sidebar.isCollapsed && "pl-[var(--issue-manager-sidebar-width)]"
4194
- ),
4195
- children: [
4196
- /* @__PURE__ */ jsxs18("div", { className: "flex h-full min-h-0 flex-col", children: [
4197
- /* @__PURE__ */ jsx18("div", { className: "min-h-0 flex-1 overflow-hidden", children: shellView.content.isIssueEditing ? /* @__PURE__ */ jsx18(
4198
- IssueManagerIssuePane,
4199
- {
4200
- controller,
4201
- selectedIssue,
4202
- onDismissCreate: onDismissIssueCreate
4203
- }
4204
- ) : shellView.content.isTaskCreating ? /* @__PURE__ */ jsx18(
4205
- IssueManagerTaskComposerPane,
4206
- {
4207
- controller,
4208
- selectedIssue,
4209
- onCancel: () => controller.setTaskEditorMode("read")
4210
- }
4211
- ) : selectedIssue ? /* @__PURE__ */ jsx18(
4212
- IssueManagerIssuePane,
4213
- {
4214
- controller,
4215
- selectedIssue,
4216
- onDismissCreate: onDismissIssueCreate
4217
- }
4218
- ) : /* @__PURE__ */ jsx18(
4219
- IssueManagerShellEmptyState,
4220
- {
4221
- controller,
4222
- emptyIllustration
4223
- }
4224
- ) }),
4225
- /* @__PURE__ */ jsx18(
4226
- IssueManagerBottomBar,
4227
- {
4228
- controller,
4229
- isNarrowLayout: shellView.isNarrowLayout,
4230
- selectedIssue,
4231
- selectedTask,
4232
- visible: shellView.content.showBottomBar
4233
- }
4234
- )
4235
- ] }),
4236
- shellView.content.isTaskDrawerOpen ? /* @__PURE__ */ jsx18(
4237
- IssueManagerTaskDrawer,
4238
- {
4239
- controller,
4240
- selectedIssue,
4241
- selectedTask,
4242
- onClose: onCloseTaskDrawer
4243
- }
4244
- ) : null
4245
- ]
4246
- }
4247
- )
4310
+ /* @__PURE__ */ jsxs18("div", { className: "relative h-full min-h-0 overflow-hidden bg-transparent", children: [
4311
+ /* @__PURE__ */ jsxs18("div", { className: "flex h-full min-h-0 flex-col", children: [
4312
+ /* @__PURE__ */ jsx18("div", { className: "min-h-0 flex-1 overflow-hidden", children: shellView.content.isIssueEditing ? /* @__PURE__ */ jsx18(
4313
+ IssueManagerIssuePane,
4314
+ {
4315
+ controller,
4316
+ selectedIssue,
4317
+ onDismissCreate: onDismissIssueCreate
4318
+ }
4319
+ ) : shellView.content.isTaskCreating ? /* @__PURE__ */ jsx18(
4320
+ IssueManagerTaskComposerPane,
4321
+ {
4322
+ controller,
4323
+ selectedIssue,
4324
+ onCancel: () => controller.setTaskEditorMode("read")
4325
+ }
4326
+ ) : selectedIssue ? /* @__PURE__ */ jsx18(
4327
+ IssueManagerIssuePane,
4328
+ {
4329
+ controller,
4330
+ selectedIssue,
4331
+ onDismissCreate: onDismissIssueCreate
4332
+ }
4333
+ ) : /* @__PURE__ */ jsx18(
4334
+ IssueManagerShellEmptyState,
4335
+ {
4336
+ controller,
4337
+ emptyIllustration
4338
+ }
4339
+ ) }),
4340
+ /* @__PURE__ */ jsx18(
4341
+ IssueManagerBottomBar,
4342
+ {
4343
+ controller,
4344
+ isNarrowLayout: shellView.isNarrowLayout,
4345
+ selectedIssue,
4346
+ selectedTask,
4347
+ visible: shellView.content.showBottomBar
4348
+ }
4349
+ )
4350
+ ] }),
4351
+ shellView.content.isTaskDrawerOpen ? /* @__PURE__ */ jsx18(
4352
+ IssueManagerTaskDrawer,
4353
+ {
4354
+ controller,
4355
+ selectedIssue,
4356
+ selectedTask,
4357
+ onClose: onCloseTaskDrawer
4358
+ }
4359
+ ) : null
4360
+ ] })
4248
4361
  ]
4249
4362
  }
4250
4363
  );
@@ -4257,13 +4370,16 @@ function IssueManagerShellEmptyState({
4257
4370
  emptyIllustration ?? null,
4258
4371
  /* @__PURE__ */ jsx18("h2", { className: "text-lg font-semibold leading-[1.35] text-[var(--text-primary)]", children: controller.copy.t("messages.noIssues") }),
4259
4372
  /* @__PURE__ */ jsx18("p", { className: "max-w-[420px] text-base leading-[1.3] text-[var(--text-secondary)]", children: controller.copy.t("emptyState") }),
4260
- /* @__PURE__ */ jsx18(
4373
+ /* @__PURE__ */ jsxs18(
4261
4374
  Button13,
4262
4375
  {
4263
- className: "mt-2",
4376
+ className: "mt-2 gap-2",
4264
4377
  type: "button",
4265
4378
  onClick: () => controller.setIssueEditorMode("create"),
4266
- children: controller.copy.t("actions.createIssue")
4379
+ children: [
4380
+ /* @__PURE__ */ jsx18(FileCreateIcon4, { size: 16 }),
4381
+ controller.copy.t("actions.createIssue")
4382
+ ]
4267
4383
  }
4268
4384
  )
4269
4385
  ] }) });
@@ -4346,7 +4462,7 @@ function IssueManagerNodeHeader({
4346
4462
  "header",
4347
4463
  {
4348
4464
  ...headerProps,
4349
- className: cn10(
4465
+ className: cn12(
4350
4466
  "flex h-full min-h-0 items-center justify-between gap-3 bg-[var(--background-panel)] px-2 pl-3",
4351
4467
  className
4352
4468
  ),
@@ -4357,13 +4473,13 @@ function IssueManagerNodeHeader({
4357
4473
  Button14,
4358
4474
  {
4359
4475
  "aria-label": toggleLabel,
4360
- className: "rounded-md",
4476
+ className: "cursor-pointer rounded-md",
4361
4477
  "data-issue-manager-sidebar-auto-collapsed": isSidebarAutoCollapsed ? "true" : void 0,
4362
4478
  "data-issue-manager-sidebar-collapsed": effectiveCollapsed ? "true" : void 0,
4363
4479
  size: "icon-sm",
4364
4480
  title: toggleLabel,
4365
4481
  type: "button",
4366
- variant: "chrome",
4482
+ variant: "ghost",
4367
4483
  onClick: (event) => {
4368
4484
  event.stopPropagation();
4369
4485
  toggleSidebar();
@@ -4393,4 +4509,4 @@ export {
4393
4509
  IssueManagerNode,
4394
4510
  IssueManagerNodeHeader
4395
4511
  };
4396
- //# sourceMappingURL=chunk-DMC3JMM2.js.map
4512
+ //# sourceMappingURL=chunk-K3F67IRA.js.map