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

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-UZEH5YBL.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-QW2WQXOG.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 {
1687
+ AddIcon,
1682
1688
  ArrowRightIcon,
1683
1689
  Button,
1684
1690
  CheckIcon,
1685
- DirectoryIcon,
1686
1691
  FileIcon,
1692
+ FolderFilledIcon,
1687
1693
  Input,
1688
- LoadingIcon,
1689
1694
  ScrollArea,
1690
1695
  SearchIcon,
1696
+ Spinner,
1691
1697
  cn
1692
1698
  } from "@nextop-os/ui-system";
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,50 @@ 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(AddIcon, { 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
+ ),
1901
+ children: /* @__PURE__ */ jsx(
1902
+ "div",
1903
+ {
1904
+ "aria-hidden": expanded ? void 0 : "true",
1905
+ className: cn(
1906
+ "min-h-0 overflow-hidden transition-[opacity,transform] duration-200 ease-out motion-reduce:transition-none",
1907
+ expanded ? "translate-y-0 opacity-100" : "-translate-y-1 opacity-0"
1908
+ ),
1909
+ inert: expanded ? void 0 : true,
1910
+ children: childContent
1911
+ }
1912
+ )
1869
1913
  }
1870
- ) : null : null
1914
+ ) : null
1871
1915
  ] });
1872
1916
  }
1873
1917
  function IssueManagerReferencePickerSearchEntry({
@@ -1882,8 +1926,8 @@ function IssueManagerReferencePickerSearchEntry({
1882
1926
  "div",
1883
1927
  {
1884
1928
  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"
1929
+ "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-[6px] border py-2.5 pr-1 pl-3 transition-colors",
1930
+ focused || selected ? "border-border bg-transparency-block" : "border-transparent bg-transparent hover:border-border/70 hover:bg-transparency-block"
1887
1931
  ),
1888
1932
  children: [
1889
1933
  /* @__PURE__ */ jsxs(
@@ -1893,10 +1937,10 @@ function IssueManagerReferencePickerSearchEntry({
1893
1937
  type: "button",
1894
1938
  onClick: () => onFocusPath(entry.path),
1895
1939
  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" }) }),
1940
+ /* @__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
1941
  /* @__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 })
1942
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-medium text-[var(--text-primary)]", children: resolveIssueManagerReferenceLabel(entry) }),
1943
+ /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-[var(--text-secondary)]", children: entry.path })
1900
1944
  ] })
1901
1945
  ]
1902
1946
  }
@@ -1904,14 +1948,16 @@ function IssueManagerReferencePickerSearchEntry({
1904
1948
  /* @__PURE__ */ jsx(
1905
1949
  Button,
1906
1950
  {
1907
- size: "xs",
1951
+ "aria-label": resolveIssueManagerReferenceLabel(entry),
1952
+ "aria-pressed": selected,
1953
+ size: "icon-sm",
1908
1954
  type: "button",
1909
- variant: selected ? "secondary" : "outline",
1955
+ variant: "ghost",
1910
1956
  onClick: () => {
1911
1957
  onFocusPath(entry.path);
1912
1958
  onToggleRef(entry);
1913
1959
  },
1914
- children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : "+"
1960
+ children: selected ? /* @__PURE__ */ jsx(CheckIcon, { size: 14 }) : /* @__PURE__ */ jsx(AddIcon, { size: 16 })
1915
1961
  }
1916
1962
  )
1917
1963
  ]
@@ -1921,7 +1967,7 @@ function IssueManagerReferencePickerSearchEntry({
1921
1967
  function IssueManagerReferencePickerFeedback({
1922
1968
  children
1923
1969
  }) {
1924
- return /* @__PURE__ */ jsx("div", { className: "grid min-h-[10rem] place-items-center px-4 text-center text-sm text-muted-foreground", children });
1970
+ 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
1971
  }
1926
1972
  function resolveIssueManagerReferenceLabel(ref) {
1927
1973
  return ref.displayName || ref.path.split("/").filter(Boolean).at(-1) || ref.path;
@@ -1929,19 +1975,20 @@ function resolveIssueManagerReferenceLabel(ref) {
1929
1975
 
1930
1976
  // src/ui/internal/reference/IssueManagerReferencePickerSections.tsx
1931
1977
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1978
+ var issueManagerReferencePickerSelectedBadgeClassName = "max-w-[14rem] rounded-[4px] border-transparent bg-[var(--transparency-block)] text-[var(--text-primary)]";
1932
1979
  function IssueManagerReferencePickerPreviewPane({
1933
1980
  copy,
1934
1981
  focusedEntry,
1935
1982
  mode
1936
1983
  }) {
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
- ] }) }),
1984
+ 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: [
1985
+ /* @__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: [
1986
+ 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)]" }),
1987
+ /* @__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) })
1988
+ ] }),
1942
1989
  /* @__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 })
1990
+ /* @__PURE__ */ jsx2("p", { className: "truncate text-[15px] font-semibold text-[var(--text-primary)]", children: resolveIssueManagerReferenceLabel(focusedEntry) }),
1991
+ /* @__PURE__ */ jsx2("p", { className: "line-clamp-3 text-sm text-[var(--text-secondary)] [overflow-wrap:anywhere]", children: focusedEntry.path })
1945
1992
  ] }) })
1946
1993
  ] }) : /* @__PURE__ */ jsx2(IssueManagerReferencePickerFeedback2, { children: mode === "search" ? copy.t("referencePicker.emptySearch") : copy.t("referencePicker.emptyDirectory") }) }) });
1947
1994
  }
@@ -1951,26 +1998,34 @@ function IssueManagerReferencePickerFooter({
1951
1998
  onConfirm,
1952
1999
  selectedRefs
1953
2000
  }) {
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: [
2001
+ 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
2002
  /* @__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", {
2003
+ /* @__PURE__ */ jsx2("span", { className: "text-sm text-[var(--text-secondary)]", children: copy.t("referencePicker.selectedCount", {
1957
2004
  count: selectedRefs.length
1958
2005
  }) }),
1959
2006
  selectedRefs.slice(0, 2).map((ref) => /* @__PURE__ */ jsx2(
1960
2007
  Badge,
1961
2008
  {
1962
- className: "max-w-[14rem] border-border/70 bg-background/80 text-foreground",
2009
+ className: issueManagerReferencePickerSelectedBadgeClassName,
2010
+ variant: "secondary",
1963
2011
  children: /* @__PURE__ */ jsx2("span", { className: "truncate", children: resolveIssueManagerReferenceLabel(ref) })
1964
2012
  },
1965
2013
  ref.path
1966
2014
  )),
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
2015
+ selectedRefs.length > 2 ? /* @__PURE__ */ jsxs2(
2016
+ Badge,
2017
+ {
2018
+ className: issueManagerReferencePickerSelectedBadgeClassName,
2019
+ variant: "secondary",
2020
+ children: [
2021
+ "+",
2022
+ selectedRefs.length - 2
2023
+ ]
2024
+ }
2025
+ ) : null
1971
2026
  ] }),
1972
2027
  /* @__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") }),
2028
+ /* @__PURE__ */ jsx2(Button2, { type: "button", variant: "secondary", onClick: onClose, children: copy.t("actions.cancel") }),
1974
2029
  /* @__PURE__ */ jsx2(
1975
2030
  Button2,
1976
2031
  {
@@ -1986,11 +2041,13 @@ function IssueManagerReferencePickerFooter({
1986
2041
  function IssueManagerReferencePickerFeedback2({
1987
2042
  children
1988
2043
  }) {
1989
- return /* @__PURE__ */ jsx2("div", { className: "grid min-h-[10rem] place-items-center px-4 text-center text-sm text-muted-foreground", children });
2044
+ 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
2045
  }
1991
2046
 
1992
2047
  // src/ui/internal/reference/IssueManagerReferencePicker.tsx
1993
2048
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
2049
+ 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";
2050
+ 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
2051
  function IssueManagerReferencePicker({
1995
2052
  copy,
1996
2053
  fileAdapter,
@@ -2021,32 +2078,31 @@ function IssueManagerReferencePicker({
2021
2078
  open,
2022
2079
  workspaceId
2023
2080
  });
2024
- const selectedCountLabel = useMemo4(
2025
- () => copy.t("referencePicker.selectedCount", { count: selectedRefs.length }),
2026
- [copy, selectedRefs.length]
2027
- );
2028
2081
  if (!open) {
2029
2082
  return null;
2030
2083
  }
2031
2084
  const dialog = /* @__PURE__ */ jsx3(
2032
2085
  "div",
2033
2086
  {
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",
2087
+ className: cn2(
2088
+ "fixed inset-0 grid place-items-center bg-[var(--backdrop)] px-3 py-4 backdrop-blur-md sm:px-6 sm:py-8",
2089
+ issueManagerReferencePickerBackdropMotionClassName
2090
+ ),
2035
2091
  style: { zIndex: "var(--z-panel)" },
2036
2092
  onClick: onClose,
2037
2093
  children: /* @__PURE__ */ jsxs3(
2038
2094
  Card,
2039
2095
  {
2040
2096
  "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)]",
2097
+ className: cn2(
2098
+ "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)]",
2099
+ issueManagerReferencePickerPanelMotionClassName
2100
+ ),
2042
2101
  role: "dialog",
2043
2102
  onClick: (event) => event.stopPropagation(),
2044
2103
  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
- ] }),
2104
+ /* @__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: [
2105
+ /* @__PURE__ */ jsx3("div", { className: "min-w-0", children: /* @__PURE__ */ jsx3(CardTitle, { children: copy.t("referencePicker.title") }) }),
2050
2106
  /* @__PURE__ */ jsx3(
2051
2107
  Button3,
2052
2108
  {
@@ -2109,10 +2165,11 @@ function IssueManagerReferencePicker({
2109
2165
  }
2110
2166
 
2111
2167
  // src/ui/internal/shell/IssueManagerShell.tsx
2112
- import { Button as Button13, cn as cn9 } from "@nextop-os/ui-system";
2168
+ import { Button as Button13, FileCreateIcon as FileCreateIcon4, cn as cn11 } from "@nextop-os/ui-system";
2113
2169
 
2114
2170
  // src/ui/internal/shell/IssueManagerPanels.tsx
2115
- import { Badge as Badge3, Button as Button7, Input as Input2 } from "@nextop-os/ui-system";
2171
+ import { useState as useState6 } from "react";
2172
+ import { Badge as Badge3, Button as Button7, ConfirmationDialog, Input as Input2 } from "@nextop-os/ui-system";
2116
2173
 
2117
2174
  // src/ui/internal/issue/IssueManagerIssueSections.tsx
2118
2175
  import {
@@ -2120,7 +2177,7 @@ import {
2120
2177
  Button as Button5,
2121
2178
  FileCreateIcon as FileCreateIcon2,
2122
2179
  ScrollArea as ScrollArea2,
2123
- cn as cn2
2180
+ cn as cn3
2124
2181
  } from "@nextop-os/ui-system";
2125
2182
 
2126
2183
  // src/ui/internal/panel/IssueManagerPanelText.ts
@@ -2195,19 +2252,19 @@ function IssueManagerDetailTextSection({
2195
2252
  tone = "muted"
2196
2253
  }) {
2197
2254
  return /* @__PURE__ */ jsxs5("section", { className: "grid gap-2.5", children: [
2198
- /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-foreground", children: label }),
2255
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: label }),
2199
2256
  /* @__PURE__ */ jsxs5("div", { className: "grid gap-1.5", children: [
2200
2257
  /* @__PURE__ */ jsx5(
2201
2258
  "p",
2202
2259
  {
2203
- className: cn2(
2204
- "text-sm leading-6",
2205
- tone === "destructive" ? "text-destructive" : "text-muted-foreground"
2260
+ className: cn3(
2261
+ "text-sm font-normal leading-6",
2262
+ tone === "destructive" ? "text-[var(--state-danger)]" : "text-[var(--text-secondary)]"
2206
2263
  ),
2207
2264
  children: body
2208
2265
  }
2209
2266
  ),
2210
- meta ? /* @__PURE__ */ jsx5("p", { className: "text-xs leading-5 text-muted-foreground", children: meta }) : null
2267
+ meta ? /* @__PURE__ */ jsx5("p", { className: "text-xs font-normal leading-5 text-[var(--text-secondary)]", children: meta }) : null
2211
2268
  ] })
2212
2269
  ] });
2213
2270
  }
@@ -2217,8 +2274,8 @@ function IssueManagerOutputSection({
2217
2274
  outputs
2218
2275
  }) {
2219
2276
  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(
2277
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: copy.t("labels.executionOutputs") }),
2278
+ 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
2279
  "button",
2223
2280
  {
2224
2281
  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 +2289,10 @@ function IssueManagerOutputSection({
2232
2289
  },
2233
2290
  children: [
2234
2291
  /* @__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 })
2292
+ /* @__PURE__ */ jsx5("span", { className: "block truncate text-sm font-semibold text-[var(--text-primary)]", children: output.displayName }),
2293
+ /* @__PURE__ */ jsx5("span", { className: "mt-1 block truncate text-xs font-normal text-[var(--text-secondary)]", children: output.path })
2237
2294
  ] }),
2238
- /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs text-muted-foreground", children: formatIssueManagerTimestamp(output.createdAtUnix) || "" })
2295
+ /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs font-normal text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(output.createdAtUnix) || "" })
2239
2296
  ]
2240
2297
  },
2241
2298
  output.outputId
@@ -2251,26 +2308,16 @@ function IssueManagerSubtaskSection({
2251
2308
  }) {
2252
2309
  return /* @__PURE__ */ jsxs5("section", { className: "grid gap-2.5", children: [
2253
2310
  /* @__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
- )
2311
+ /* @__PURE__ */ jsx5("h3", { className: "text-sm font-semibold text-[var(--text-primary)]", children: copy.t("labels.subtasks") }),
2312
+ /* @__PURE__ */ jsxs5(Button5, { size: "dialog", type: "button", variant: "ghost", onClick: onCreate, children: [
2313
+ /* @__PURE__ */ jsx5(FileCreateIcon2, { size: 14 }),
2314
+ copy.t("actions.add")
2315
+ ] })
2269
2316
  ] }),
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(
2317
+ 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
2318
  "button",
2272
2319
  {
2273
- className: cn2(
2320
+ className: cn3(
2274
2321
  "flex items-start justify-between gap-4 rounded-xl border px-4 py-3 text-left transition-colors",
2275
2322
  selectedTaskId === task.taskId ? "border-border/90 bg-background-fronted" : "border-border/65 hover:bg-accent/18"
2276
2323
  ),
@@ -2279,15 +2326,15 @@ function IssueManagerSubtaskSection({
2279
2326
  children: [
2280
2327
  /* @__PURE__ */ jsxs5("div", { className: "min-w-0 flex-1", children: [
2281
2328
  /* @__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) })
2329
+ /* @__PURE__ */ jsx5("span", { className: "truncate text-sm font-semibold text-[var(--text-primary)]", children: task.title }),
2330
+ /* @__PURE__ */ jsx5(Badge2, { className: "rounded-md px-2 py-1 text-[11px] font-medium", children: resolveIssueManagerStatusLabel(copy, task.status) })
2284
2331
  ] }),
2285
- /* @__PURE__ */ jsx5("p", { className: "mt-2 line-clamp-2 text-sm leading-6 text-muted-foreground", children: summarizeIssueManagerContent(
2332
+ /* @__PURE__ */ jsx5("p", { className: "mt-2 line-clamp-2 text-sm font-normal leading-6 text-[var(--text-secondary)]", children: summarizeIssueManagerContent(
2286
2333
  task.content,
2287
2334
  copy.t("messages.taskContentEmpty")
2288
2335
  ) })
2289
2336
  ] }),
2290
- /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs text-muted-foreground", children: formatIssueManagerTimestamp(
2337
+ /* @__PURE__ */ jsx5("span", { className: "shrink-0 text-xs font-normal text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(
2291
2338
  task.createdAtUnix ?? task.updatedAtUnix
2292
2339
  ) || "" })
2293
2340
  ]
@@ -2298,9 +2345,9 @@ function IssueManagerSubtaskSection({
2298
2345
  }
2299
2346
 
2300
2347
  // src/ui/internal/content/IssueManagerDescriptionSection.tsx
2301
- import { useEffect as useEffect4, useRef, useState as useState3 } from "react";
2348
+ import { useEffect as useEffect5, useRef, useState as useState4 } from "react";
2302
2349
  import { RichTextReadonlyContent } from "@nextop-os/ui-rich-text/editor";
2303
- import { cn as cn3 } from "@nextop-os/ui-system";
2350
+ import { cn as cn4 } from "@nextop-os/ui-system";
2304
2351
  import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
2305
2352
  function IssueManagerDescriptionSection({
2306
2353
  content,
@@ -2311,9 +2358,9 @@ function IssueManagerDescriptionSection({
2311
2358
  variant = "card"
2312
2359
  }) {
2313
2360
  const contentRef = useRef(null);
2314
- const [isOverflowing, setIsOverflowing] = useState3(false);
2361
+ const [isOverflowing, setIsOverflowing] = useState4(false);
2315
2362
  const normalizedContent = normalizeIssueManagerContent(content).trim();
2316
- useEffect4(() => {
2363
+ useEffect5(() => {
2317
2364
  if (variant === "plain") {
2318
2365
  setIsOverflowing(false);
2319
2366
  return;
@@ -2346,13 +2393,13 @@ function IssueManagerDescriptionSection({
2346
2393
  if (variant === "plain") {
2347
2394
  return /* @__PURE__ */ jsxs6("section", { className: "grid gap-2", children: [
2348
2395
  /* @__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(
2396
+ normalizedContent ? /* @__PURE__ */ jsx6("div", { className: "max-w-3xl text-sm font-normal leading-5 text-[var(--text-secondary)]", children: /* @__PURE__ */ jsx6(
2350
2397
  IssueManagerDescriptionContent,
2351
2398
  {
2352
2399
  content: normalizedContent,
2353
2400
  onOpen
2354
2401
  }
2355
- ) }) : /* @__PURE__ */ jsx6("p", { className: "text-sm leading-5 text-text-secondary", children: emptyLabel })
2402
+ ) }) : /* @__PURE__ */ jsx6("p", { className: "text-sm font-normal leading-5 text-[var(--text-secondary)]", children: emptyLabel })
2356
2403
  ] });
2357
2404
  }
2358
2405
  return /* @__PURE__ */ jsxs6("section", { className: "grid gap-2", children: [
@@ -2360,7 +2407,7 @@ function IssueManagerDescriptionSection({
2360
2407
  /* @__PURE__ */ jsxs6(
2361
2408
  "div",
2362
2409
  {
2363
- className: cn3(
2410
+ className: cn4(
2364
2411
  "relative min-w-0 rounded-lg border border-border-1 bg-transparent px-4 py-3",
2365
2412
  minHeightClass
2366
2413
  ),
@@ -2368,8 +2415,8 @@ function IssueManagerDescriptionSection({
2368
2415
  /* @__PURE__ */ jsx6(
2369
2416
  "div",
2370
2417
  {
2371
- className: cn3(
2372
- "max-h-[18rem] overflow-y-auto pr-2 text-sm leading-5 text-text-secondary",
2418
+ className: cn4(
2419
+ "max-h-[18rem] overflow-y-auto pr-2 text-sm font-normal leading-5 text-[var(--text-secondary)]",
2373
2420
  isOverflowing && "pb-8"
2374
2421
  ),
2375
2422
  ref: contentRef,
@@ -2379,7 +2426,7 @@ function IssueManagerDescriptionSection({
2379
2426
  content: normalizedContent,
2380
2427
  onOpen
2381
2428
  }
2382
- ) : /* @__PURE__ */ jsx6("p", { className: "text-text-secondary", children: emptyLabel })
2429
+ ) : /* @__PURE__ */ jsx6("p", { className: "font-normal text-[var(--text-secondary)]", children: emptyLabel })
2383
2430
  }
2384
2431
  ),
2385
2432
  isOverflowing ? /* @__PURE__ */ jsx6(
@@ -2414,10 +2461,12 @@ function IssueManagerDescriptionContent({
2414
2461
  }
2415
2462
 
2416
2463
  // src/ui/internal/content/IssueManagerRichTextTextarea.tsx
2417
- import { useEffect as useEffect5, useMemo as useMemo5, useRef as useRef2, useState as useState4 } from "react";
2464
+ import { useEffect as useEffect6, useMemo as useMemo4, useRef as useRef2, useState as useState5 } from "react";
2418
2465
  import { RichTextAtEditor } from "@nextop-os/ui-rich-text/editor";
2419
- import { Button as Button6, LinkIcon, cn as cn4 } from "@nextop-os/ui-system";
2466
+ import { Button as Button6, LinkIcon, cn as cn5 } from "@nextop-os/ui-system";
2420
2467
  import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
2468
+ 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";
2469
+ var issueManagerRichTextPlaceholderBaseClassName = "min-h-20 w-full p-3 text-sm font-normal leading-[1.3] text-[var(--text-placeholder)]";
2421
2470
  function IssueManagerRichTextTextarea({
2422
2471
  controller,
2423
2472
  onChange,
@@ -2426,15 +2475,15 @@ function IssueManagerRichTextTextarea({
2426
2475
  textareaClassName,
2427
2476
  value
2428
2477
  }) {
2429
- const providers = useMemo5(
2478
+ const providers = useMemo4(
2430
2479
  () => controller.resolveRichTextAtProviders(surface),
2431
2480
  [controller, surface]
2432
2481
  );
2433
2482
  const showReferenceAction = controller.canReferenceWorkspaceFiles;
2434
- const [focusSignal, setFocusSignal] = useState4(0);
2483
+ const [focusSignal, setFocusSignal] = useState5(0);
2435
2484
  const previousValueRef = useRef2(value);
2436
2485
  const wasAddingReferenceRef = useRef2(false);
2437
- useEffect5(() => {
2486
+ useEffect6(() => {
2438
2487
  const isAddingReference = controller.referenceTarget?.mode === "insert" && controller.referenceTarget.parentKind === surface;
2439
2488
  if (wasAddingReferenceRef.current && !isAddingReference && value !== previousValueRef.current) {
2440
2489
  setFocusSignal((current) => current + 1);
@@ -2454,15 +2503,24 @@ function IssueManagerRichTextTextarea({
2454
2503
  noMatchesLabel: controller.copy.t("richTextAt.noMatches"),
2455
2504
  removeReferenceActionLabel: controller.copy.t("actions.removeReference")
2456
2505
  },
2457
- textareaClassName: cn4(textareaClassName, showReferenceAction && "pb-14"),
2506
+ textareaClassName: cn5(
2507
+ issueManagerRichTextTextareaBaseClassName,
2508
+ textareaClassName,
2509
+ showReferenceAction && "pb-11"
2510
+ ),
2511
+ placeholderClassName: cn5(
2512
+ issueManagerRichTextPlaceholderBaseClassName,
2513
+ textareaClassName,
2514
+ showReferenceAction && "pb-11"
2515
+ ),
2458
2516
  placeholder,
2459
2517
  value,
2460
2518
  onChange,
2461
- overlay: showReferenceAction ? /* @__PURE__ */ jsx7("div", { className: "pointer-events-none absolute inset-x-4 bottom-3 z-10 flex", children: /* @__PURE__ */ jsxs7(
2519
+ overlay: showReferenceAction ? /* @__PURE__ */ jsx7("div", { className: "pointer-events-none absolute inset-x-3 bottom-3 z-10 flex", children: /* @__PURE__ */ jsxs7(
2462
2520
  Button6,
2463
2521
  {
2464
2522
  className: "pointer-events-auto",
2465
- size: "sm",
2523
+ size: "default",
2466
2524
  type: "button",
2467
2525
  variant: "secondary",
2468
2526
  onClick: () => {
@@ -2478,6 +2536,14 @@ function IssueManagerRichTextTextarea({
2478
2536
  );
2479
2537
  }
2480
2538
 
2539
+ // src/ui/internal/shell/IssueManagerEditorMotion.ts
2540
+ 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";
2541
+ var issueManagerEditorRiseInDelay0ClassName = "motion-safe:[animation-delay:0ms]";
2542
+ var issueManagerEditorRiseInDelay1ClassName = "motion-safe:[animation-delay:55ms]";
2543
+ var issueManagerEditorRiseInDelay2ClassName = "motion-safe:[animation-delay:110ms]";
2544
+ var issueManagerEditorRiseInDelay3ClassName = "motion-safe:[animation-delay:165ms]";
2545
+ 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";
2546
+
2481
2547
  // src/ui/internal/shell/IssueManagerPanels.tsx
2482
2548
  import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
2483
2549
  function IssueManagerIssuePane({
@@ -2495,61 +2561,87 @@ function IssueManagerIssuePane({
2495
2561
  const selectedTask = selectedTaskId ? (controller.taskDetail.value?.task?.taskId === selectedTaskId ? controller.taskDetail.value.task : tasks.find((task) => task.taskId === selectedTaskId)) ?? null : null;
2496
2562
  const latestRun = selectedTask ? controller.taskDetail.value?.latestRun ?? controller.taskDetail.value?.recentRuns[0] ?? null : null;
2497
2563
  const latestOutputs = selectedTask ? controller.taskDetail.value?.latestOutputs ?? [] : [];
2564
+ const [deleteDialogOpen, setDeleteDialogOpen] = useState6(false);
2565
+ const [deleteBusy, setDeleteBusy] = useState6(false);
2498
2566
  if (isCreatingIssue || isEditingIssue) {
2499
2567
  return /* @__PURE__ */ jsxs8("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: [
2500
2568
  /* @__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") }) }),
2569
+ /* @__PURE__ */ jsx8(
2570
+ "div",
2571
+ {
2572
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
2573
+ 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") })
2574
+ }
2575
+ ),
2502
2576
  /* @__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") }),
2577
+ /* @__PURE__ */ jsxs8(
2578
+ "label",
2579
+ {
2580
+ className: `flex w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
2581
+ children: [
2582
+ /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.title") }),
2583
+ /* @__PURE__ */ jsx8(
2584
+ Input2,
2585
+ {
2586
+ placeholder: copy.t("composer.issueTitlePlaceholder"),
2587
+ variant: "md",
2588
+ value: controller.issueDraft.title,
2589
+ onChange: (event) => controller.setIssueTitle(event.target.value)
2590
+ }
2591
+ )
2592
+ ]
2593
+ }
2594
+ ),
2595
+ /* @__PURE__ */ jsxs8(
2596
+ "div",
2597
+ {
2598
+ className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
2599
+ children: [
2600
+ /* @__PURE__ */ jsx8("span", { className: "leading-5", children: copy.t("labels.content") }),
2601
+ /* @__PURE__ */ jsx8(
2602
+ IssueManagerRichTextTextarea,
2603
+ {
2604
+ controller,
2605
+ surface: "issue",
2606
+ textareaClassName: "min-h-[180px] resize-none",
2607
+ placeholder: copy.t("composer.issueContentPlaceholder"),
2608
+ value: controller.issueDraft.content,
2609
+ onChange: controller.setIssueContent
2610
+ }
2611
+ )
2612
+ ]
2613
+ }
2614
+ )
2615
+ ] })
2616
+ ] }) }),
2617
+ /* @__PURE__ */ jsx8(
2618
+ "div",
2619
+ {
2620
+ className: `shrink-0 border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
2621
+ children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-end gap-3", children: [
2505
2622
  /* @__PURE__ */ jsx8(
2506
- Input2,
2623
+ Button7,
2507
2624
  {
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)
2625
+ size: "dialog",
2626
+ type: "button",
2627
+ variant: "secondary",
2628
+ onClick: onDismissCreate,
2629
+ children: copy.t("actions.cancel")
2512
2630
  }
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") }),
2631
+ ),
2517
2632
  /* @__PURE__ */ jsx8(
2518
- IssueManagerRichTextTextarea,
2633
+ Button7,
2519
2634
  {
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
2635
+ disabled: isIssueTitleMissing,
2636
+ size: "dialog",
2637
+ type: "button",
2638
+ onClick: () => void controller.saveIssue(),
2639
+ children: copy.t("actions.saveIssue")
2526
2640
  }
2527
2641
  )
2528
2642
  ] })
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
- ] }) })
2643
+ }
2644
+ )
2553
2645
  ] });
2554
2646
  }
2555
2647
  if (!selectedIssue) {
@@ -2558,14 +2650,28 @@ function IssueManagerIssuePane({
2558
2650
  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
2651
  /* @__PURE__ */ jsxs8("header", { className: "flex items-start justify-between gap-6", children: [
2560
2652
  /* @__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) }),
2653
+ /* @__PURE__ */ jsx8("h2", { className: "line-clamp-2 text-base font-semibold leading-6 text-[var(--text-primary)]", children: selectedIssue.title }),
2654
+ /* @__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: [
2655
+ /* @__PURE__ */ jsx8(Badge3, { variant: "secondary", children: resolveIssueManagerStatusLabel(copy, selectedIssue.status) }),
2656
+ /* @__PURE__ */ jsx8(
2657
+ "span",
2658
+ {
2659
+ "aria-hidden": "true",
2660
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2661
+ }
2662
+ ),
2564
2663
  /* @__PURE__ */ jsxs8("span", { children: [
2565
2664
  copy.t("labels.creator"),
2566
2665
  " ",
2567
2666
  resolveIssueManagerCreatorLabel(selectedIssue)
2568
2667
  ] }),
2668
+ /* @__PURE__ */ jsx8(
2669
+ "span",
2670
+ {
2671
+ "aria-hidden": "true",
2672
+ className: "h-4 w-px shrink-0 bg-[var(--line-2)]"
2673
+ }
2674
+ ),
2569
2675
  /* @__PURE__ */ jsxs8("span", { children: [
2570
2676
  copy.t("labels.createdAt"),
2571
2677
  " ",
@@ -2573,12 +2679,10 @@ function IssueManagerIssuePane({
2573
2679
  ] })
2574
2680
  ] })
2575
2681
  ] }),
2576
- /* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-5 pt-1", children: [
2682
+ /* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-2 pt-1", children: [
2577
2683
  /* @__PURE__ */ jsx8(
2578
2684
  Button7,
2579
2685
  {
2580
- className: "h-auto px-0 text-sm font-semibold text-muted-foreground hover:text-foreground",
2581
- size: "sm",
2582
2686
  type: "button",
2583
2687
  variant: "ghost",
2584
2688
  onClick: () => controller.setIssueEditorMode("edit"),
@@ -2588,18 +2692,35 @@ function IssueManagerIssuePane({
2588
2692
  /* @__PURE__ */ jsx8(
2589
2693
  Button7,
2590
2694
  {
2591
- className: "h-auto px-0 text-sm font-semibold text-destructive hover:text-destructive",
2592
- size: "sm",
2695
+ className: "text-[var(--state-danger)] hover:bg-[var(--on-danger)] hover:text-[var(--state-danger)]",
2593
2696
  type: "button",
2594
2697
  variant: "ghost",
2595
- onClick: () => {
2596
- void controller.deleteIssue();
2597
- },
2698
+ onClick: () => setDeleteDialogOpen(true),
2598
2699
  children: copy.t("actions.delete")
2599
2700
  }
2600
2701
  )
2601
2702
  ] })
2602
2703
  ] }),
2704
+ /* @__PURE__ */ jsx8(
2705
+ ConfirmationDialog,
2706
+ {
2707
+ cancelLabel: copy.t("actions.cancel"),
2708
+ confirmBusy: deleteBusy,
2709
+ confirmLabel: copy.t("actions.delete"),
2710
+ description: selectedIssue.title,
2711
+ open: deleteDialogOpen,
2712
+ title: copy.t("confirmations.deleteIssue"),
2713
+ tone: "destructive",
2714
+ onConfirm: () => {
2715
+ setDeleteBusy(true);
2716
+ void controller.deleteIssue({ skipConfirmation: true }).finally(() => {
2717
+ setDeleteBusy(false);
2718
+ setDeleteDialogOpen(false);
2719
+ });
2720
+ },
2721
+ onOpenChange: setDeleteDialogOpen
2722
+ }
2723
+ ),
2603
2724
  /* @__PURE__ */ jsx8(
2604
2725
  IssueManagerDescriptionSection,
2605
2726
  {
@@ -2643,17 +2764,19 @@ function IssueManagerIssuePane({
2643
2764
  }
2644
2765
 
2645
2766
  // src/ui/internal/shell/IssueManagerBottomBar.tsx
2646
- import { Button as Button8, cn as cn5 } from "@nextop-os/ui-system";
2767
+ import { Button as Button8, cn as cn7 } from "@nextop-os/ui-system";
2647
2768
 
2648
2769
  // src/ui/internal/task/IssueManagerRunSections.tsx
2649
- import { useState as useState5 } from "react";
2770
+ import { useState as useState7 } from "react";
2650
2771
  import {
2651
2772
  Badge as Badge4,
2652
2773
  Select,
2653
2774
  SelectContent,
2654
2775
  SelectItem,
2655
2776
  SelectTrigger,
2656
- SparkIcon
2777
+ 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({
@@ -2662,7 +2785,7 @@ function IssueManagerRunActionTrigger({
2662
2785
  iconSize = 16,
2663
2786
  triggerClassName
2664
2787
  }) {
2665
- const [resetToken, setResetToken] = useState5(0);
2788
+ const [resetToken, setResetToken] = useState7(0);
2666
2789
  return /* @__PURE__ */ jsxs9(
2667
2790
  Select,
2668
2791
  {
@@ -2676,7 +2799,11 @@ function IssueManagerRunActionTrigger({
2676
2799
  SelectTrigger,
2677
2800
  {
2678
2801
  "aria-label": controller.copy.t("actions.askAgentToRun"),
2679
- className: triggerClassName,
2802
+ className: cn6(
2803
+ buttonVariants({ variant: "secondary", size: "dialog" }),
2804
+ "[&>svg]:hidden",
2805
+ triggerClassName
2806
+ ),
2680
2807
  children: /* @__PURE__ */ jsxs9("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
2681
2808
  /* @__PURE__ */ jsx9(SparkIcon, { size: iconSize }),
2682
2809
  /* @__PURE__ */ jsx9("span", { className: "truncate", children: controller.copy.t("actions.askAgentToRun") })
@@ -2698,7 +2825,7 @@ function IssueManagerRunPanels({
2698
2825
  return /* @__PURE__ */ jsxs9("div", { className: "grid gap-4", children: [
2699
2826
  /* @__PURE__ */ jsxs9("section", { className: "rounded-lg border border-border-1 bg-transparent px-4 py-4", children: [
2700
2827
  /* @__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(
2828
+ 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
2829
  "div",
2703
2830
  {
2704
2831
  className: "rounded-lg border border-[var(--border-2)] bg-transparent px-3.5 py-3",
@@ -2706,13 +2833,13 @@ function IssueManagerRunPanels({
2706
2833
  /* @__PURE__ */ jsxs9("div", { className: "flex items-start justify-between gap-3", children: [
2707
2834
  /* @__PURE__ */ jsxs9("div", { className: "min-w-0", children: [
2708
2835
  /* @__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(
2836
+ /* @__PURE__ */ jsx9("p", { className: "mt-1 text-xs leading-[1.55] text-[var(--text-secondary)]", children: formatIssueManagerTimestamp(
2710
2837
  run.updatedAtUnix ?? run.createdAtUnix
2711
2838
  ) })
2712
2839
  ] }),
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) })
2840
+ /* @__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
2841
  ] }),
2715
- run.errorMessage ? /* @__PURE__ */ jsx9("p", { className: "mt-2 text-xs text-destructive", children: run.errorMessage }) : null
2842
+ run.errorMessage ? /* @__PURE__ */ jsx9("p", { className: "mt-2 text-xs text-[var(--state-danger)]", children: run.errorMessage }) : null
2716
2843
  ]
2717
2844
  },
2718
2845
  run.runId
@@ -2720,7 +2847,7 @@ function IssueManagerRunPanels({
2720
2847
  ] }),
2721
2848
  /* @__PURE__ */ jsxs9("section", { className: "rounded-lg border border-border-1 bg-transparent px-4 py-4", children: [
2722
2849
  /* @__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(
2850
+ 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
2851
  "button",
2725
2852
  {
2726
2853
  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 +2861,7 @@ function IssueManagerRunPanels({
2734
2861
  },
2735
2862
  children: [
2736
2863
  /* @__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 })
2864
+ /* @__PURE__ */ jsx9("p", { className: "mt-1 truncate text-xs leading-[1.55] text-[var(--text-secondary)]", children: output.path })
2738
2865
  ]
2739
2866
  },
2740
2867
  output.outputId
@@ -2759,26 +2886,22 @@ function IssueManagerBottomBar({
2759
2886
  return /* @__PURE__ */ jsx10("div", { className: "border-t border-[var(--border-1)] bg-transparent px-6 py-4 backdrop-blur", children: /* @__PURE__ */ jsxs10(
2760
2887
  "div",
2761
2888
  {
2762
- className: cn5(
2889
+ className: cn7(
2763
2890
  "flex gap-3",
2764
- isNarrowLayout ? "flex-col items-stretch" : "items-center justify-end"
2891
+ isNarrowLayout ? "flex-wrap items-center justify-end" : "items-center justify-end"
2765
2892
  ),
2766
2893
  children: [
2767
2894
  /* @__PURE__ */ jsx10(
2768
2895
  IssueManagerRunActionTrigger,
2769
2896
  {
2770
2897
  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
- )
2898
+ disabled: !selectedTask
2776
2899
  }
2777
2900
  ),
2778
2901
  controller.canInviteCollaborators ? /* @__PURE__ */ jsx10(
2779
2902
  Button8,
2780
2903
  {
2781
- className: cn5("px-4", isNarrowLayout && "w-full"),
2904
+ className: "px-4",
2782
2905
  disabled: !selectedIssue,
2783
2906
  size: "dialog",
2784
2907
  type: "button",
@@ -2796,9 +2919,9 @@ function IssueManagerBottomBar({
2796
2919
  // src/ui/internal/shell/IssueManagerFloatingNotice.tsx
2797
2920
  import {
2798
2921
  FailedFilledIcon,
2799
- Spinner,
2922
+ Spinner as Spinner2,
2800
2923
  toastVariants,
2801
- cn as cn6
2924
+ cn as cn8
2802
2925
  } from "@nextop-os/ui-system";
2803
2926
  import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
2804
2927
  function IssueManagerFloatingNotice({
@@ -2810,14 +2933,14 @@ function IssueManagerFloatingNotice({
2810
2933
  {
2811
2934
  "aria-busy": notice.isLoading,
2812
2935
  "aria-live": variant === "destructive" ? "assertive" : "polite",
2813
- className: cn6(
2936
+ className: cn8(
2814
2937
  toastVariants({ variant }),
2815
2938
  "w-fit max-w-[min(72vw,40rem)] px-4 py-3 shadow-lg"
2816
2939
  ),
2817
2940
  role: variant === "destructive" ? "alert" : "status",
2818
2941
  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
2942
  notice.isLoading ? /* @__PURE__ */ jsx11(
2820
- Spinner,
2943
+ Spinner2,
2821
2944
  {
2822
2945
  className: "shrink-0 text-current",
2823
2946
  size: 16,
@@ -2832,7 +2955,7 @@ function IssueManagerFloatingNotice({
2832
2955
  }
2833
2956
 
2834
2957
  // src/ui/internal/shell/IssueManagerSidebar.tsx
2835
- import { cn as cn8 } from "@nextop-os/ui-system";
2958
+ import { cn as cn10 } from "@nextop-os/ui-system";
2836
2959
 
2837
2960
  // src/ui/internal/shell/IssueManagerSidebarSections.tsx
2838
2961
  import {
@@ -2843,7 +2966,7 @@ import {
2843
2966
  Input as Input3,
2844
2967
  ScrollArea as ScrollArea3,
2845
2968
  UnderlineTabs,
2846
- cn as cn7
2969
+ cn as cn9
2847
2970
  } from "@nextop-os/ui-system";
2848
2971
 
2849
2972
  // src/ui/internal/shell/IssueManagerShellState.ts
@@ -2857,7 +2980,7 @@ var issueManagerStatusFilters = [
2857
2980
  "canceled"
2858
2981
  ];
2859
2982
  function resolveIssueManagerSidebarViewState(input) {
2860
- if (input.issues.isLoading && input.issues.value.length === 0) {
2983
+ if (input.issues.isLoading && input.issues.value.length === 0 && input.issues.hasResolved !== true) {
2861
2984
  return {
2862
2985
  kind: "loading"
2863
2986
  };
@@ -2898,6 +3021,20 @@ function buildIssueManagerStatusCounts(issues) {
2898
3021
  }
2899
3022
  return counts;
2900
3023
  }
3024
+ function resolveIssueManagerStatusCounts(input) {
3025
+ return input.statusCounts ? mapIssueManagerStatusCounts(input.statusCounts) : buildIssueManagerStatusCounts(input.value);
3026
+ }
3027
+ function mapIssueManagerStatusCounts(counts) {
3028
+ return {
3029
+ all: counts.all,
3030
+ canceled: counts.canceled,
3031
+ completed: counts.completed,
3032
+ failed: counts.failed,
3033
+ not_started: counts.notStarted,
3034
+ pending_acceptance: counts.pendingAcceptance,
3035
+ running: counts.running
3036
+ };
3037
+ }
2901
3038
  function resolveIssueManagerShellContentViewState(input) {
2902
3039
  const isIssueEditing = input.issueEditorMode !== "read";
2903
3040
  const isTaskCreating = !isIssueEditing && input.taskEditorMode === "create";
@@ -2978,11 +3115,11 @@ function IssueManagerSidebarBody({
2978
3115
  return /* @__PURE__ */ jsx12(
2979
3116
  ScrollArea3,
2980
3117
  {
2981
- className: cn7("min-h-0", isNarrowLayout ? "flex-none" : "h-full flex-1"),
3118
+ className: cn9("min-h-0", isNarrowLayout ? "flex-none" : "h-full flex-1"),
2982
3119
  children: /* @__PURE__ */ jsx12(
2983
3120
  "div",
2984
3121
  {
2985
- className: cn7(
3122
+ className: cn9(
2986
3123
  "flex min-h-full flex-col gap-2.5 px-4 pt-1.5 pb-4",
2987
3124
  isNarrowLayout ? "min-h-0" : "h-full"
2988
3125
  ),
@@ -3060,7 +3197,7 @@ function IssueManagerSearchField({
3060
3197
  Input3,
3061
3198
  {
3062
3199
  "aria-label": placeholder,
3063
- className: cn7(
3200
+ className: cn9(
3064
3201
  "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
3202
  "[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none",
3066
3203
  value ? "pr-9" : "pr-3"
@@ -3096,7 +3233,7 @@ function IssueManagerSidebarIssueList({
3096
3233
  return /* @__PURE__ */ jsx12(
3097
3234
  "div",
3098
3235
  {
3099
- className: cn7(
3236
+ className: cn9(
3100
3237
  "flex gap-2.5",
3101
3238
  isNarrowLayout ? "flex-row flex-nowrap items-start overflow-x-auto overflow-y-hidden [scrollbar-width:none] [&::-webkit-scrollbar]:hidden" : "flex-col"
3102
3239
  ),
@@ -3124,7 +3261,7 @@ function IssueManagerSidebarItem({
3124
3261
  return /* @__PURE__ */ jsxs12(
3125
3262
  "button",
3126
3263
  {
3127
- className: cn7(
3264
+ className: cn9(
3128
3265
  "rounded-lg border px-3.5 py-3.5 text-left transition-colors",
3129
3266
  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
3267
  selected ? "border-[var(--border-1)] bg-[var(--background-fronted)]" : "border-[var(--border-1)] bg-transparent hover:bg-[var(--transparency-block)]"
@@ -3137,7 +3274,7 @@ function IssueManagerSidebarItem({
3137
3274
  /* @__PURE__ */ jsx12("p", { className: "text-[12px] leading-[1.55] text-[var(--text-secondary)]", children: formatIssueManagerDate(issue.updatedAtUnix ?? issue.createdAtUnix) }),
3138
3275
  /* @__PURE__ */ jsx12("p", { className: "line-clamp-4 text-[14px] font-semibold leading-[1.35rem] text-[var(--text-primary)]", children: issue.title })
3139
3276
  ] }),
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) })
3277
+ /* @__PURE__ */ jsx12(Badge5, { className: "shrink-0", variant: "secondary", children: resolveIssueManagerStatusLabel(copy, issue.status) })
3141
3278
  ] }),
3142
3279
  /* @__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
3280
  ]
@@ -3151,14 +3288,14 @@ function IssueManagerSidebarLoadingState({
3151
3288
  "div",
3152
3289
  {
3153
3290
  "aria-hidden": "true",
3154
- className: cn7(
3291
+ className: cn9(
3155
3292
  "gap-2.5",
3156
3293
  isNarrowLayout ? "flex flex-row flex-nowrap overflow-x-hidden" : "grid"
3157
3294
  ),
3158
3295
  children: Array.from({ length: 4 }, (_, index) => /* @__PURE__ */ jsxs12(
3159
3296
  "div",
3160
3297
  {
3161
- className: cn7(
3298
+ className: cn9(
3162
3299
  "rounded-lg bg-transparent px-3.5 py-3.5",
3163
3300
  isNarrowLayout && "h-24 max-h-24 min-h-24 w-[clamp(220px,58vw,320px)] flex-[0_0_clamp(220px,58vw,320px)]"
3164
3301
  ),
@@ -3182,7 +3319,7 @@ function IssueManagerSidebarEmptyState({
3182
3319
  return /* @__PURE__ */ jsxs12(
3183
3320
  "div",
3184
3321
  {
3185
- className: cn7(
3322
+ className: cn9(
3186
3323
  "relative flex flex-1 flex-col items-center justify-center self-stretch overflow-hidden p-0 text-center",
3187
3324
  isNarrowLayout ? "h-24 max-h-24 min-h-24 w-full flex-[0_0_100%]" : "min-h-full"
3188
3325
  ),
@@ -3190,7 +3327,7 @@ function IssueManagerSidebarEmptyState({
3190
3327
  /* @__PURE__ */ jsx12(
3191
3328
  "p",
3192
3329
  {
3193
- className: cn7(
3330
+ className: cn9(
3194
3331
  "text-sm font-semibold leading-5 text-[var(--text-primary)]",
3195
3332
  tone === "destructive" ? "text-[var(--state-danger)]" : "text-[var(--text-primary)]"
3196
3333
  ),
@@ -3211,7 +3348,7 @@ function IssueManagerSidebarErrorState({
3211
3348
  return /* @__PURE__ */ jsxs12(
3212
3349
  "div",
3213
3350
  {
3214
- className: cn7(
3351
+ className: cn9(
3215
3352
  "relative flex flex-1 flex-col items-center justify-center self-stretch overflow-hidden px-4 py-6 text-center",
3216
3353
  isNarrowLayout ? "h-24 max-h-24 min-h-24 w-full flex-[0_0_100%]" : "min-h-full"
3217
3354
  ),
@@ -3275,10 +3412,10 @@ function IssueManagerSidebar({
3275
3412
  "aside",
3276
3413
  {
3277
3414
  "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",
3415
+ className: cn10(
3416
+ "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
3417
  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"
3418
+ isCollapsed && "pointer-events-none border-r-transparent after:opacity-100 after:delay-0 [&>*]:opacity-0 [&>*]:blur-[1px] [&>*]:delay-0 motion-reduce:[&>*]:blur-none"
3282
3419
  ),
3283
3420
  inert: isCollapsed ? true : void 0,
3284
3421
  children: [
@@ -3304,7 +3441,7 @@ function IssueManagerSidebar({
3304
3441
  /* @__PURE__ */ jsx13(
3305
3442
  "div",
3306
3443
  {
3307
- className: cn8(
3444
+ className: cn10(
3308
3445
  "relative flex min-h-0 flex-col",
3309
3446
  isNarrowLayout ? "flex-none" : "flex-1"
3310
3447
  ),
@@ -3337,18 +3474,8 @@ function IssueManagerSidebar({
3337
3474
  }
3338
3475
 
3339
3476
  // 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";
3477
+ import { Button as Button10, Input as Input4 } from "@nextop-os/ui-system";
3350
3478
  import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
3351
- var taskPriorityOptions = ["high", "medium", "low"];
3352
3479
  function IssueManagerTaskComposerPane({
3353
3480
  controller,
3354
3481
  onCancel,
@@ -3356,118 +3483,84 @@ function IssueManagerTaskComposerPane({
3356
3483
  }) {
3357
3484
  const copy = controller.copy;
3358
3485
  const isTaskTitleMissing = controller.taskDraft.title.trim().length === 0;
3359
- const showAttachmentActions = controller.canUploadWorkspaceFiles || controller.canReferenceWorkspaceFiles;
3360
3486
  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,
3487
+ /* @__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: [
3488
+ /* @__PURE__ */ jsx14(
3489
+ "div",
3490
+ {
3491
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
3492
+ children: /* @__PURE__ */ jsx14("h2", { className: "m-0 text-[17px] font-semibold leading-[1.35] text-[var(--text-primary)]", children: copy.t("actions.addSubtask") })
3493
+ }
3494
+ ),
3495
+ /* @__PURE__ */ jsxs14("div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
3496
+ /* @__PURE__ */ jsxs14(
3497
+ "label",
3498
+ {
3499
+ className: `flex w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
3500
+ children: [
3501
+ /* @__PURE__ */ jsx14("span", { className: "leading-5", children: copy.t("labels.title") }),
3502
+ /* @__PURE__ */ jsx14(
3503
+ Input4,
3504
+ {
3505
+ placeholder: copy.t("composer.subtaskTitlePlaceholder"),
3506
+ variant: "md",
3507
+ value: controller.taskDraft.title,
3508
+ onChange: (event) => controller.setTaskTitle(event.target.value)
3509
+ }
3510
+ )
3511
+ ]
3512
+ }
3513
+ ),
3514
+ /* @__PURE__ */ jsxs14(
3515
+ "div",
3390
3516
  {
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)
3517
+ className: `flex min-h-0 w-full min-w-0 flex-col gap-2 text-sm font-semibold text-[var(--text-primary)] ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
3518
+ children: [
3519
+ /* @__PURE__ */ jsx14("span", { className: "leading-5", children: copy.t("labels.requirementDescription") }),
3520
+ /* @__PURE__ */ jsx14(
3521
+ IssueManagerRichTextTextarea,
3522
+ {
3523
+ controller,
3524
+ surface: "task",
3525
+ textareaClassName: "min-h-[180px] resize-none",
3526
+ placeholder: copy.t("composer.subtaskContentPlaceholder"),
3527
+ value: controller.taskDraft.content,
3528
+ onChange: controller.setTaskContent
3529
+ }
3530
+ )
3531
+ ]
3395
3532
  }
3396
3533
  )
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: [
3534
+ ] })
3535
+ ] }) }),
3536
+ /* @__PURE__ */ jsx14(
3537
+ "div",
3538
+ {
3539
+ className: `shrink-0 border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
3540
+ children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-end gap-3", children: [
3401
3541
  /* @__PURE__ */ jsx14(
3402
- IssueManagerRichTextTextarea,
3542
+ Button10,
3403
3543
  {
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
3544
+ size: "default",
3545
+ type: "button",
3546
+ variant: "secondary",
3547
+ onClick: onCancel,
3548
+ children: copy.t("actions.cancel")
3410
3549
  }
3411
3550
  ),
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
3551
+ /* @__PURE__ */ jsx14(
3552
+ Button10,
3553
+ {
3554
+ disabled: !selectedIssue || isTaskTitleMissing,
3555
+ size: "default",
3556
+ type: "button",
3557
+ onClick: () => void controller.saveTask(),
3558
+ children: copy.t("actions.saveSubtask")
3559
+ }
3560
+ )
3446
3561
  ] })
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
- ] }) })
3562
+ }
3563
+ )
3471
3564
  ] });
3472
3565
  }
3473
3566
 
@@ -3484,16 +3577,16 @@ import {
3484
3577
  DropdownMenuItem,
3485
3578
  DropdownMenuTrigger,
3486
3579
  Input as Input5,
3487
- Select as Select3,
3488
- SelectContent as SelectContent3,
3489
- SelectItem as SelectItem3,
3490
- SelectTrigger as SelectTrigger3,
3491
- SelectValue as SelectValue2,
3580
+ Select as Select2,
3581
+ SelectContent as SelectContent2,
3582
+ SelectItem as SelectItem2,
3583
+ SelectTrigger as SelectTrigger2,
3584
+ SelectValue,
3492
3585
  SparkIcon as SparkIcon2
3493
3586
  } from "@nextop-os/ui-system";
3494
3587
 
3495
3588
  // src/ui/internal/content/IssueManagerContextSection.tsx
3496
- import { Button as Button11, DirectoryIcon as DirectoryIcon3, FileIcon as FileIcon3 } from "@nextop-os/ui-system";
3589
+ import { Button as Button11, DirectoryIcon, FileIcon as FileIcon3 } from "@nextop-os/ui-system";
3497
3590
  import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
3498
3591
  function IssueManagerContextSection({
3499
3592
  copy,
@@ -3518,7 +3611,7 @@ function IssueManagerContextSection({
3518
3611
  }
3519
3612
  )
3520
3613
  ] }),
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(
3614
+ 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
3615
  "div",
3523
3616
  {
3524
3617
  className: "flex items-center justify-between gap-3 rounded-lg border border-[var(--border-2)] bg-transparent px-3.5 py-3",
@@ -3537,21 +3630,21 @@ function IssueManagerContextSection({
3537
3630
  },
3538
3631
  children: [
3539
3632
  ref.path.endsWith("/") ? /* @__PURE__ */ jsx15(
3540
- DirectoryIcon3,
3633
+ DirectoryIcon,
3541
3634
  {
3542
- className: "shrink-0 text-text-secondary",
3635
+ className: "shrink-0 text-[var(--text-secondary)]",
3543
3636
  size: 16
3544
3637
  }
3545
3638
  ) : /* @__PURE__ */ jsx15(
3546
3639
  FileIcon3,
3547
3640
  {
3548
- className: "shrink-0 text-text-secondary",
3641
+ className: "shrink-0 text-[var(--text-secondary)]",
3549
3642
  size: 16
3550
3643
  }
3551
3644
  ),
3552
3645
  /* @__PURE__ */ jsxs15("span", { className: "min-w-0", children: [
3553
3646
  /* @__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 })
3647
+ /* @__PURE__ */ jsx15("span", { className: "block truncate text-xs leading-[1.55] text-[var(--text-secondary)]", children: ref.path })
3555
3648
  ] })
3556
3649
  ]
3557
3650
  }
@@ -3559,7 +3652,7 @@ function IssueManagerContextSection({
3559
3652
  /* @__PURE__ */ jsx15(
3560
3653
  Button11,
3561
3654
  {
3562
- className: "h-7 rounded-md px-2 text-[13px] font-semibold text-text-secondary hover:text-[var(--text-primary)]",
3655
+ className: "h-7 rounded-md px-2 text-[13px] font-semibold text-[var(--text-secondary)] hover:text-[var(--text-primary)]",
3563
3656
  size: "sm",
3564
3657
  type: "button",
3565
3658
  variant: "ghost",
@@ -3608,7 +3701,7 @@ function canIssueManagerSaveTask(input) {
3608
3701
 
3609
3702
  // src/ui/internal/shell/IssueManagerTaskDrawerSections.tsx
3610
3703
  import { Fragment, jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
3611
- var taskPriorityOptions2 = ["high", "medium", "low"];
3704
+ var taskPriorityOptions = ["high", "medium", "low"];
3612
3705
  function IssueManagerTaskDrawerHeader({
3613
3706
  controller,
3614
3707
  selectedTask,
@@ -3619,10 +3712,10 @@ function IssueManagerTaskDrawerHeader({
3619
3712
  return /* @__PURE__ */ jsxs16("div", { className: "flex items-start justify-between gap-4 border-b border-border-1 px-7 py-5", children: [
3620
3713
  /* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
3621
3714
  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: [
3715
+ 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
3716
  /* @__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
3717
  /* @__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) }),
3718
+ /* @__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
3719
  /* @__PURE__ */ jsx16("span", { className: "mx-3 h-[13px] w-px shrink-0 bg-border-1" }),
3627
3720
  /* @__PURE__ */ jsxs16("span", { children: [
3628
3721
  copy.t("labels.updatedAt"),
@@ -3648,7 +3741,7 @@ function IssueManagerTaskDrawerHeader({
3648
3741
  "span",
3649
3742
  {
3650
3743
  "aria-hidden": "true",
3651
- className: "text-base leading-none tracking-[0.18em] text-text-secondary",
3744
+ className: "text-base leading-none tracking-[0.18em] text-[var(--text-secondary)]",
3652
3745
  children: "..."
3653
3746
  }
3654
3747
  )
@@ -3727,65 +3820,89 @@ function IssueManagerTaskDrawerEditBody({
3727
3820
  const copy = controller.copy;
3728
3821
  return /* @__PURE__ */ jsxs16(Fragment, { children: [
3729
3822
  /* @__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
- ] })
3823
+ /* @__PURE__ */ jsxs16(
3824
+ "label",
3825
+ {
3826
+ className: `grid gap-2 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay0ClassName}`,
3827
+ children: [
3828
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.title") }),
3829
+ /* @__PURE__ */ jsx16(
3830
+ Input5,
3831
+ {
3832
+ placeholder: copy.t("composer.taskTitlePlaceholder"),
3833
+ variant: "md",
3834
+ value: controller.taskDraft.title,
3835
+ onChange: (event) => controller.setTaskTitle(event.target.value)
3836
+ }
3837
+ )
3838
+ ]
3839
+ }
3840
+ ),
3841
+ /* @__PURE__ */ jsx16(
3842
+ "div",
3843
+ {
3844
+ className: `flex flex-wrap items-center gap-3 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay1ClassName}`,
3845
+ children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
3846
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-medium text-[var(--text-secondary)]", children: copy.t("labels.priority") }),
3847
+ /* @__PURE__ */ jsxs16(
3848
+ Select2,
3849
+ {
3850
+ value: controller.taskDraft.priority,
3851
+ onValueChange: (value) => controller.setTaskPriority(value),
3852
+ children: [
3853
+ /* @__PURE__ */ jsx16(
3854
+ SelectTrigger2,
3855
+ {
3856
+ "aria-label": copy.t("labels.priority"),
3857
+ className: "min-w-28 rounded-lg border-border-1 bg-transparency-block text-sm",
3858
+ children: /* @__PURE__ */ jsx16(SelectValue, {})
3859
+ }
3860
+ ),
3861
+ /* @__PURE__ */ jsx16(SelectContent2, { style: { zIndex: "var(--z-panel-popover)" }, children: taskPriorityOptions.map((priority) => /* @__PURE__ */ jsx16(SelectItem2, { value: priority, children: resolveIssueManagerPriorityLabel(copy, priority) }, priority)) })
3862
+ ]
3863
+ }
3864
+ )
3865
+ ] })
3866
+ }
3867
+ ),
3868
+ /* @__PURE__ */ jsxs16(
3869
+ "div",
3870
+ {
3871
+ className: `grid gap-2 ${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay2ClassName}`,
3872
+ children: [
3873
+ /* @__PURE__ */ jsx16("span", { className: "text-sm font-semibold leading-5 text-[var(--text-primary)]", children: copy.t("labels.content") }),
3874
+ /* @__PURE__ */ jsx16(
3875
+ IssueManagerRichTextTextarea,
3876
+ {
3877
+ controller,
3878
+ surface: "task",
3879
+ textareaClassName: "min-h-[12rem] resize-none",
3880
+ placeholder: copy.t("composer.taskContentPlaceholder"),
3881
+ value: controller.taskDraft.content,
3882
+ onChange: controller.setTaskContent
3883
+ }
3884
+ )
3885
+ ]
3886
+ }
3887
+ )
3777
3888
  ] }),
3778
3889
  /* @__PURE__ */ jsx16(
3779
- IssueManagerContextSection,
3890
+ "div",
3780
3891
  {
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
3892
+ className: `${issueManagerEditorRiseInClassName} ${issueManagerEditorRiseInDelay3ClassName}`,
3893
+ children: /* @__PURE__ */ jsx16(
3894
+ IssueManagerContextSection,
3895
+ {
3896
+ copy,
3897
+ emptyLabel: copy.t("messages.noTaskReferences"),
3898
+ refs: taskRefs,
3899
+ onAdd: () => {
3900
+ void controller.attachReferences("task");
3901
+ },
3902
+ onOpen: controller.openReference,
3903
+ onRemove: controller.removeContextRef
3904
+ }
3905
+ )
3789
3906
  }
3790
3907
  ),
3791
3908
  !isCreate ? /* @__PURE__ */ jsx16(
@@ -3854,7 +3971,7 @@ function IssueManagerTaskDrawerFooter({
3854
3971
  {
3855
3972
  controller,
3856
3973
  iconSize: 15,
3857
- triggerClassName: "min-w-[11rem] rounded-lg border-border-1 bg-transparency-block px-3.5 py-2 text-sm"
3974
+ triggerClassName: "min-w-[11rem]"
3858
3975
  }
3859
3976
  ),
3860
3977
  controller.canInviteCollaborators ? /* @__PURE__ */ jsx16(
@@ -3872,48 +3989,54 @@ function IssueManagerTaskDrawerFooter({
3872
3989
  ] }) });
3873
3990
  }
3874
3991
  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
- ] }) });
3992
+ return /* @__PURE__ */ jsx16(
3993
+ "div",
3994
+ {
3995
+ className: `border-t border-border-1 px-7 py-4 ${issueManagerEditorFooterFadeInClassName}`,
3996
+ children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between gap-3", children: [
3997
+ /* @__PURE__ */ jsx16("div", { className: "flex items-center gap-2", children: !view.isCreate && selectedTask ? /* @__PURE__ */ jsx16(
3998
+ Button12,
3999
+ {
4000
+ size: "default",
4001
+ type: "button",
4002
+ variant: "destructive",
4003
+ onClick: () => {
4004
+ void controller.deleteTask();
4005
+ },
4006
+ children: copy.t("actions.deleteTask")
4007
+ }
4008
+ ) : null }),
4009
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
4010
+ /* @__PURE__ */ jsx16(
4011
+ Button12,
4012
+ {
4013
+ size: "default",
4014
+ type: "button",
4015
+ variant: "secondary",
4016
+ onClick: () => controller.setTaskEditorMode("read"),
4017
+ children: copy.t("actions.cancel")
4018
+ }
4019
+ ),
4020
+ /* @__PURE__ */ jsxs16(
4021
+ Button12,
4022
+ {
4023
+ disabled: canIssueManagerSaveTask({
4024
+ selectedIssue,
4025
+ view
4026
+ }) === false,
4027
+ size: "default",
4028
+ type: "button",
4029
+ onClick: () => void controller.saveTask(),
4030
+ children: [
4031
+ /* @__PURE__ */ jsx16(SparkIcon2, { size: 16 }),
4032
+ copy.t("actions.saveTask")
4033
+ ]
4034
+ }
4035
+ )
4036
+ ] })
4037
+ ] })
4038
+ }
4039
+ );
3917
4040
  }
3918
4041
  return null;
3919
4042
  }
@@ -3979,10 +4102,10 @@ function IssueManagerTaskDrawer({
3979
4102
 
3980
4103
  // src/ui/internal/shell/useIssueManagerShellView.ts
3981
4104
  import {
3982
- useEffect as useEffect6,
4105
+ useEffect as useEffect7,
3983
4106
  useEffectEvent as useEffectEvent3,
3984
4107
  useRef as useRef3,
3985
- useState as useState6
4108
+ useState as useState8
3986
4109
  } from "react";
3987
4110
  function useIssueManagerShellView({
3988
4111
  controller,
@@ -3991,15 +4114,15 @@ function useIssueManagerShellView({
3991
4114
  }) {
3992
4115
  const layoutRef = useRef3(null);
3993
4116
  const resizeRef = useRef3(null);
3994
- const [sidebarWidth, setSidebarWidth] = useState6(
4117
+ const [sidebarWidth, setSidebarWidth] = useState8(
3995
4118
  issueManagerSidebarDefaultWidth
3996
4119
  );
3997
- const [isNarrowLayout, setIsNarrowLayout] = useState6(false);
4120
+ const [isNarrowLayout, setIsNarrowLayout] = useState8(false);
3998
4121
  const dismissNotification = useEffectEvent3(() => {
3999
4122
  controller.dismissNotification();
4000
4123
  });
4001
4124
  const floatingNotice = controller.floatingNotice;
4002
- useEffect6(() => {
4125
+ useEffect7(() => {
4003
4126
  const publishLayout = () => {
4004
4127
  const width = layoutRef.current?.getBoundingClientRect().width ?? 0;
4005
4128
  if (!width) {
@@ -4022,7 +4145,7 @@ function useIssueManagerShellView({
4022
4145
  window.removeEventListener("resize", publishLayout);
4023
4146
  };
4024
4147
  }, []);
4025
- useEffect6(() => {
4148
+ useEffect7(() => {
4026
4149
  if (!floatingNotice) {
4027
4150
  return void 0;
4028
4151
  }
@@ -4043,7 +4166,7 @@ function useIssueManagerShellView({
4043
4166
  copy: controller.copy,
4044
4167
  issues: controller.issues
4045
4168
  });
4046
- const statusCounts = buildIssueManagerStatusCounts(controller.issues.value);
4169
+ const statusCounts = resolveIssueManagerStatusCounts(controller.issues);
4047
4170
  const isSidebarAutoCollapsed = isNarrowLayout;
4048
4171
  const isSidebarCollapsed = controller.nodeState.taskListCollapsed === true || isSidebarAutoCollapsed;
4049
4172
  return {
@@ -4052,6 +4175,7 @@ function useIssueManagerShellView({
4052
4175
  isNarrowLayout,
4053
4176
  layoutRef,
4054
4177
  layoutStyle: {
4178
+ gridTemplateColumns: isSidebarCollapsed ? "0 minmax(0, 1fr)" : "var(--issue-manager-sidebar-width) minmax(0, 1fr)",
4055
4179
  "--issue-manager-sidebar-width": `${sidebarWidth}px`
4056
4180
  },
4057
4181
  resizeHandle: {
@@ -4148,7 +4272,7 @@ function IssueManagerShell({
4148
4272
  return /* @__PURE__ */ jsxs18(
4149
4273
  "div",
4150
4274
  {
4151
- className: "relative min-h-0 flex-1 overflow-hidden bg-transparent",
4275
+ 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
4276
  "data-issue-manager-sidebar-auto-collapsed": shellView.sidebar.isAutoCollapsed ? "true" : void 0,
4153
4277
  "data-issue-manager-sidebar-collapsed": shellView.sidebar.isCollapsed ? "true" : void 0,
4154
4278
  ref: shellView.layoutRef,
@@ -4166,7 +4290,7 @@ function IssueManagerShell({
4166
4290
  statusCounts: shellView.sidebar.statusCounts
4167
4291
  }
4168
4292
  ),
4169
- shellView.sidebar.isCollapsed ? null : /* @__PURE__ */ jsx18(
4293
+ shellView.sidebar.isAutoCollapsed ? null : /* @__PURE__ */ jsx18(
4170
4294
  "div",
4171
4295
  {
4172
4296
  "aria-label": controller.copy.t("labels.resizeIssueList"),
@@ -4174,7 +4298,10 @@ function IssueManagerShell({
4174
4298
  "aria-valuemax": shellView.resizeHandle.ariaValueMax,
4175
4299
  "aria-valuemin": shellView.resizeHandle.ariaValueMin,
4176
4300
  "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",
4301
+ className: cn11(
4302
+ "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",
4303
+ shellView.sidebar.isCollapsed && "pointer-events-none left-[-6px] opacity-0"
4304
+ ),
4178
4305
  role: "separator",
4179
4306
  tabIndex: 0,
4180
4307
  onKeyDown: shellView.resizeHandle.onKeyDown,
@@ -4185,66 +4312,57 @@ function IssueManagerShell({
4185
4312
  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
4313
  }
4187
4314
  ),
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
- )
4315
+ /* @__PURE__ */ jsxs18("div", { className: "relative h-full min-h-0 overflow-hidden bg-transparent", children: [
4316
+ /* @__PURE__ */ jsxs18("div", { className: "flex h-full min-h-0 flex-col", children: [
4317
+ /* @__PURE__ */ jsx18("div", { className: "min-h-0 flex-1 overflow-hidden", children: shellView.content.isIssueEditing ? /* @__PURE__ */ jsx18(
4318
+ IssueManagerIssuePane,
4319
+ {
4320
+ controller,
4321
+ selectedIssue,
4322
+ onDismissCreate: onDismissIssueCreate
4323
+ }
4324
+ ) : shellView.content.isTaskCreating ? /* @__PURE__ */ jsx18(
4325
+ IssueManagerTaskComposerPane,
4326
+ {
4327
+ controller,
4328
+ selectedIssue,
4329
+ onCancel: () => controller.setTaskEditorMode("read")
4330
+ }
4331
+ ) : selectedIssue ? /* @__PURE__ */ jsx18(
4332
+ IssueManagerIssuePane,
4333
+ {
4334
+ controller,
4335
+ selectedIssue,
4336
+ onDismissCreate: onDismissIssueCreate
4337
+ }
4338
+ ) : /* @__PURE__ */ jsx18(
4339
+ IssueManagerShellEmptyState,
4340
+ {
4341
+ controller,
4342
+ emptyIllustration
4343
+ }
4344
+ ) }),
4345
+ /* @__PURE__ */ jsx18(
4346
+ IssueManagerBottomBar,
4347
+ {
4348
+ controller,
4349
+ isNarrowLayout: shellView.isNarrowLayout,
4350
+ selectedIssue,
4351
+ selectedTask,
4352
+ visible: shellView.content.showBottomBar
4353
+ }
4354
+ )
4355
+ ] }),
4356
+ shellView.content.isTaskDrawerOpen ? /* @__PURE__ */ jsx18(
4357
+ IssueManagerTaskDrawer,
4358
+ {
4359
+ controller,
4360
+ selectedIssue,
4361
+ selectedTask,
4362
+ onClose: onCloseTaskDrawer
4363
+ }
4364
+ ) : null
4365
+ ] })
4248
4366
  ]
4249
4367
  }
4250
4368
  );
@@ -4257,13 +4375,16 @@ function IssueManagerShellEmptyState({
4257
4375
  emptyIllustration ?? null,
4258
4376
  /* @__PURE__ */ jsx18("h2", { className: "text-lg font-semibold leading-[1.35] text-[var(--text-primary)]", children: controller.copy.t("messages.noIssues") }),
4259
4377
  /* @__PURE__ */ jsx18("p", { className: "max-w-[420px] text-base leading-[1.3] text-[var(--text-secondary)]", children: controller.copy.t("emptyState") }),
4260
- /* @__PURE__ */ jsx18(
4378
+ /* @__PURE__ */ jsxs18(
4261
4379
  Button13,
4262
4380
  {
4263
- className: "mt-2",
4381
+ className: "mt-2 gap-2",
4264
4382
  type: "button",
4265
4383
  onClick: () => controller.setIssueEditorMode("create"),
4266
- children: controller.copy.t("actions.createIssue")
4384
+ children: [
4385
+ /* @__PURE__ */ jsx18(FileCreateIcon4, { size: 16 }),
4386
+ controller.copy.t("actions.createIssue")
4387
+ ]
4267
4388
  }
4268
4389
  )
4269
4390
  ] }) });
@@ -4346,7 +4467,7 @@ function IssueManagerNodeHeader({
4346
4467
  "header",
4347
4468
  {
4348
4469
  ...headerProps,
4349
- className: cn10(
4470
+ className: cn12(
4350
4471
  "flex h-full min-h-0 items-center justify-between gap-3 bg-[var(--background-panel)] px-2 pl-3",
4351
4472
  className
4352
4473
  ),
@@ -4357,13 +4478,13 @@ function IssueManagerNodeHeader({
4357
4478
  Button14,
4358
4479
  {
4359
4480
  "aria-label": toggleLabel,
4360
- className: "rounded-md",
4481
+ className: "cursor-pointer rounded-md",
4361
4482
  "data-issue-manager-sidebar-auto-collapsed": isSidebarAutoCollapsed ? "true" : void 0,
4362
4483
  "data-issue-manager-sidebar-collapsed": effectiveCollapsed ? "true" : void 0,
4363
4484
  size: "icon-sm",
4364
4485
  title: toggleLabel,
4365
4486
  type: "button",
4366
- variant: "chrome",
4487
+ variant: "ghost",
4367
4488
  onClick: (event) => {
4368
4489
  event.stopPropagation();
4369
4490
  toggleSidebar();
@@ -4393,4 +4514,4 @@ export {
4393
4514
  IssueManagerNode,
4394
4515
  IssueManagerNodeHeader
4395
4516
  };
4396
- //# sourceMappingURL=chunk-DMC3JMM2.js.map
4517
+ //# sourceMappingURL=chunk-PDBLEOV4.js.map