@parallelworks/tandem-web 0.138.2 → 0.139.1

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.
Files changed (81) hide show
  1. package/components/AgentWork.js +35 -35
  2. package/components/AppRoot.js +8 -7
  3. package/components/AreaWork.js +1 -1
  4. package/components/BlockHandle.js +3 -3
  5. package/components/CommandPalette.js +27 -27
  6. package/components/DateChip.js +27 -27
  7. package/components/DocLinkPicker.js +17 -17
  8. package/components/Graph.js +6 -6
  9. package/components/HoverCards.js +30 -29
  10. package/components/IssueListBlock.js +83 -83
  11. package/components/LinkCard.js +20 -20
  12. package/components/MentionPicker.js +12 -12
  13. package/components/NewIssueDialog.js +116 -116
  14. package/components/NewProjectDialog.js +5 -4
  15. package/components/Planning.js +31 -43
  16. package/components/RouterLink.js +4 -4
  17. package/components/ShareDialog.js +12 -12
  18. package/components/SharedUI.js +19 -19
  19. package/components/SlashMenu.js +11 -11
  20. package/components/SubPages.js +10 -10
  21. package/components/UnlinkedMentions.js +10 -10
  22. package/components/WorkCounts.js +8 -8
  23. package/components/settings.js +31 -31
  24. package/hostedApp.js +41 -39
  25. package/hosting.d.ts +24 -11
  26. package/index.js +58 -27
  27. package/lib/base.js +1 -14
  28. package/lib/docs.js +6 -6
  29. package/lib/issueMenu.js +33 -33
  30. package/lib/knowledge.js +90 -101
  31. package/lib/knowledgeKinds.js +14 -0
  32. package/lib/pageTitle.js +22 -10
  33. package/lib/projectList.js +1 -1
  34. package/lib/projectStates.js +15 -0
  35. package/lib/router.js +20 -34
  36. package/package.json +2 -2
  37. package/pages/areas.js +223 -223
  38. package/pages/decisions.js +69 -69
  39. package/pages/issues.js +38 -38
  40. package/pages/projects.js +268 -267
  41. package/pages/triage.js +133 -133
  42. package/pages.js +21 -0
  43. package/routes/__root.js +6 -6
  44. package/routes/_workspace/agents/_slug2.js +21 -21
  45. package/routes/_workspace/agents/index2.js +16 -16
  46. package/routes/_workspace/areas/_area2.js +105 -105
  47. package/routes/_workspace/docs/_doc2.js +189 -189
  48. package/routes/_workspace/docs2.js +8 -8
  49. package/routes/_workspace/graph2.js +9 -9
  50. package/routes/_workspace/graph3.js +8 -8
  51. package/routes/_workspace/issues/_identifier2.js +249 -249
  52. package/routes/_workspace/issues/index.js +6 -6
  53. package/routes/_workspace/knowledge/_term2.js +119 -118
  54. package/routes/_workspace/knowledge/index.js +8 -8
  55. package/routes/_workspace/knowledge/index2.js +41 -40
  56. package/routes/_workspace/measures2.js +4 -4
  57. package/routes/_workspace/measures3.js +18 -18
  58. package/routes/_workspace/notifications2.js +112 -112
  59. package/routes/_workspace/people/_username.js +4 -4
  60. package/routes/_workspace/people/_username2.js +36 -36
  61. package/routes/_workspace/projects/_projectId3.js +369 -368
  62. package/routes/_workspace/projects/index.js +7 -7
  63. package/routes/_workspace/settings/account2.js +3 -3
  64. package/routes/_workspace/settings/audit-log2.js +4 -4
  65. package/routes/_workspace/settings/audit-log3.js +51 -51
  66. package/routes/_workspace/settings/labels2.js +14 -14
  67. package/routes/_workspace/settings/members2.js +9 -9
  68. package/routes/_workspace/settings/runners2.js +11 -11
  69. package/routes/_workspace/settings/teams2.js +15 -15
  70. package/routes/_workspace/settings/tokens2.js +5 -5
  71. package/routes/_workspace/settings/webhooks2.js +7 -7
  72. package/routes/_workspace/settings2.js +3 -3
  73. package/routes/_workspace/teams/_key/cycles/_number2.js +16 -16
  74. package/routes/_workspace/teams/_key/cycles/index2.js +40 -40
  75. package/routes/_workspace/teams/_key/issues.js +4 -4
  76. package/routes/_workspace/teams/_key/projects.js +4 -4
  77. package/routes/_workspace/teams/_key/settings2.js +133 -133
  78. package/routes/_workspace2.js +319 -319
  79. package/routes/docs/route2.js +19 -19
  80. package/routes/new2.js +8 -8
  81. package/routes/request2._token.js +4 -4
@@ -1,17 +1,17 @@
1
1
  import { issuePath as e } from "../lib/branch.js";
2
- import { Link as t } from "../lib/router.js";
3
- import { allDecisionsQuery as n, inboxQuery as r, myAllDecisionsQuery as i, myDecisionsQuery as a, teamsQuery as o } from "../api/queries.js";
4
- import { ChevronRightIcon as s, PriorityIcon as c, usePriorityNames as l } from "../components/icons.js";
5
- import { copyItem as u, useLinkItems as d } from "../lib/menus.js";
6
- import { usePageTitle as f } from "../lib/pageTitle.js";
2
+ import { usePageTitle as t } from "../lib/pageTitle.js";
3
+ import { Link as n } from "../lib/router.js";
4
+ import { allDecisionsQuery as r, inboxQuery as i, myAllDecisionsQuery as a, myDecisionsQuery as o, teamsQuery as s } from "../api/queries.js";
5
+ import { ChevronRightIcon as c, PriorityIcon as l, usePriorityNames as u } from "../components/icons.js";
6
+ import { copyItem as d, useLinkItems as f } from "../lib/menus.js";
7
7
  import { AnsweredDecision as p, DecisionCard as m } from "../components/AgentWork.js";
8
8
  import { FavoriteStar as h } from "../components/FavoriteStar.js";
9
9
  import { recentlyAnswered as g, saveScope as _, savedScope as v } from "../lib/decisionScope.js";
10
10
  import { SegmentedControl as y, Tooltip as b, useOpenMenu as x } from "@parallelworks/ui";
11
- import { useState as S } from "react";
12
- import { useTranslations as C } from "use-intl";
13
- import { jsx as w, jsxs as T } from "react/jsx-runtime";
14
- import { useParams as E, useSearch as D } from "@tanstack/react-router";
11
+ import { useParams as S, useSearch as C } from "@tanstack/react-router";
12
+ import { useState as w } from "react";
13
+ import { useTranslations as T } from "use-intl";
14
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
15
15
  import { useSuspenseQuery as O } from "@tanstack/react-query";
16
16
  // src/pages/decisions.tsx
17
17
  var k = ["workspace", "all"];
@@ -23,162 +23,162 @@ function A(e) {
23
23
  }
24
24
  return [...t.values()];
25
25
  }
26
- function j({ first: n, count: r, open: i, onToggle: a, showWorkspace: o, children: f }) {
27
- let p = C("decisions"), m = d(), h = x(), g = l();
28
- return /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
26
+ function j({ first: t, count: r, open: i, onToggle: a, showWorkspace: o, children: s }) {
27
+ let p = T("decisions"), m = f(), h = x(), g = u();
28
+ return /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ D("div", {
29
29
  className: "mb-1.5 flex min-w-0 items-center gap-1 text-xs text-muted-foreground",
30
30
  children: [
31
- /* @__PURE__ */ w("button", {
31
+ /* @__PURE__ */ E("button", {
32
32
  type: "button",
33
33
  onClick: a,
34
34
  "aria-expanded": i,
35
- "aria-label": p(i ? "hideDecisions" : "showDecisions", { issue: n.identifier }),
35
+ "aria-label": p(i ? "hideDecisions" : "showDecisions", { issue: t.identifier }),
36
36
  className: "-ml-1 shrink-0 rounded p-0.5 hover:bg-muted hover:text-foreground",
37
- children: /* @__PURE__ */ w(s, { className: i ? "size-3.5 rotate-90" : "size-3.5" })
37
+ children: /* @__PURE__ */ E(c, { className: i ? "size-3.5 rotate-90" : "size-3.5" })
38
38
  }),
39
- /* @__PURE__ */ T(t, {
39
+ /* @__PURE__ */ D(n, {
40
40
  to: "/$workspace/issues/$identifier",
41
41
  params: {
42
- workspace: n.workspace,
43
- identifier: n.identifier
42
+ workspace: t.workspace,
43
+ identifier: t.identifier
44
44
  },
45
- onContextMenu: (t) => h(t, [...m(e(n.workspace, n.identifier)), u(p("copyId"), n.identifier)]),
45
+ onContextMenu: (n) => h(n, [...m(e(t.workspace, t.identifier)), d(p("copyId"), t.identifier)]),
46
46
  className: "flex min-w-0 items-center gap-2 hover:text-foreground",
47
47
  children: [
48
- o && /* @__PURE__ */ w("span", {
48
+ o && /* @__PURE__ */ E("span", {
49
49
  className: "max-w-[40%] shrink-0 truncate rounded bg-muted px-1.5 py-0.5 font-medium text-foreground",
50
- children: n.workspaceName
50
+ children: t.workspaceName
51
51
  }),
52
- /* @__PURE__ */ w(b, {
53
- content: g[n.issuePriority],
54
- children: /* @__PURE__ */ T("span", {
52
+ /* @__PURE__ */ E(b, {
53
+ content: g[t.issuePriority],
54
+ children: /* @__PURE__ */ D("span", {
55
55
  className: "flex",
56
- children: [/* @__PURE__ */ w(c, { priority: n.issuePriority }), /* @__PURE__ */ w("span", {
56
+ children: [/* @__PURE__ */ E(l, { priority: t.issuePriority }), /* @__PURE__ */ E("span", {
57
57
  className: "sr-only",
58
- children: g[n.issuePriority]
58
+ children: g[t.issuePriority]
59
59
  })]
60
60
  })
61
61
  }),
62
- /* @__PURE__ */ w("span", {
62
+ /* @__PURE__ */ E("span", {
63
63
  className: "shrink-0 font-medium",
64
- children: n.identifier
64
+ children: t.identifier
65
65
  }),
66
- /* @__PURE__ */ w("span", {
66
+ /* @__PURE__ */ E("span", {
67
67
  className: "truncate",
68
- children: n.issueTitle
68
+ children: t.issueTitle
69
69
  })
70
70
  ]
71
71
  }),
72
- /* @__PURE__ */ w("span", {
72
+ /* @__PURE__ */ E("span", {
73
73
  className: "ml-1 shrink-0",
74
74
  children: r
75
75
  })
76
76
  ]
77
- }), i && /* @__PURE__ */ w("div", {
77
+ }), i && /* @__PURE__ */ E("div", {
78
78
  className: "space-y-3",
79
- children: f
79
+ children: s
80
80
  })] });
81
81
  }
82
82
  function M() {
83
- let { workspace: e, key: t } = E({ strict: !1 }), c = C("decisions"), l = x(), { team: u = t } = D({ strict: !1 }), { data: d } = O(o(e)), b = d.find((e) => e.key === u);
84
- f(c("title"), b?.name);
85
- let [M, N] = S(v), P = b ? "workspace" : M, F = P === "all", I = (e) => b ? e.filter((e) => e.identifier.startsWith(`${b.key}-`)) : e, L = (e) => {
83
+ let { workspace: e, key: n } = S({ strict: !1 }), l = T("decisions"), u = x(), { team: d = n } = C({ strict: !1 }), { data: f } = O(s(e)), b = f.find((e) => e.key === d);
84
+ t(l("title"), b?.name);
85
+ let [M, N] = w(v), P = b ? "workspace" : M, F = P === "all", I = (e) => b ? e.filter((e) => e.identifier.startsWith(`${b.key}-`)) : e, L = (e) => {
86
86
  N(e), _(e);
87
- }, { data: R } = O(F ? a : r(e)), { data: z } = O(F ? i : n(e)), B = I(R), V = g(I(z)), [H, U] = S(/* @__PURE__ */ new Set()), [W, G] = S(!1), K = (e) => U((t) => {
87
+ }, { data: R } = O(F ? o : i(e)), { data: z } = O(F ? a : r(e)), B = I(R), V = g(I(z)), [H, U] = w(/* @__PURE__ */ new Set()), [W, G] = w(!1), K = (e) => U((t) => {
88
88
  let n = new Set(t);
89
89
  return n.delete(e) || n.add(e), n;
90
90
  }), q = () => k.map((e) => ({
91
- label: c(`scopes.${e}`),
91
+ label: l(`scopes.${e}`),
92
92
  checked: e === P,
93
93
  onClick: () => L(e)
94
94
  }));
95
- return /* @__PURE__ */ T("div", {
95
+ return /* @__PURE__ */ D("div", {
96
96
  className: "flex h-full flex-col",
97
- children: [/* @__PURE__ */ T("header", {
97
+ children: [/* @__PURE__ */ D("header", {
98
98
  className: "flex min-h-12 shrink-0 flex-wrap items-center gap-x-3 gap-y-2 border-b border-border px-4 py-2 md:px-5",
99
99
  children: [
100
- /* @__PURE__ */ w("h1", {
100
+ /* @__PURE__ */ E("h1", {
101
101
  className: "text-sm font-semibold",
102
- children: b ? c("teamTitle", { team: b.name }) : c("title")
102
+ children: b ? l("teamTitle", { team: b.name }) : l("title")
103
103
  }),
104
- !b && /* @__PURE__ */ w(h, {
104
+ !b && /* @__PURE__ */ E(h, {
105
105
  workspace: e,
106
106
  kind: "page",
107
107
  target: "decisions"
108
108
  }),
109
- /* @__PURE__ */ w("span", {
109
+ /* @__PURE__ */ E("span", {
110
110
  className: "text-xs text-muted-foreground",
111
- children: c("openCount", { count: B.length })
111
+ children: l("openCount", { count: B.length })
112
112
  }),
113
- !b && /* @__PURE__ */ w("div", {
113
+ !b && /* @__PURE__ */ E("div", {
114
114
  className: "ml-auto",
115
- children: /* @__PURE__ */ w(y, {
115
+ children: /* @__PURE__ */ E(y, {
116
116
  size: "sm",
117
- label: c("scope"),
117
+ label: l("scope"),
118
118
  options: k.map((e) => ({
119
119
  value: e,
120
- label: c(`scopes.${e}`)
120
+ label: l(`scopes.${e}`)
121
121
  })),
122
122
  value: P,
123
123
  onValueChange: L,
124
- onContextMenu: (e) => l(e, q())
124
+ onContextMenu: (e) => u(e, q())
125
125
  })
126
126
  })
127
127
  ]
128
- }), /* @__PURE__ */ w("div", {
128
+ }), /* @__PURE__ */ E("div", {
129
129
  className: "min-h-0 flex-1 overflow-y-auto",
130
- children: /* @__PURE__ */ T("div", {
130
+ children: /* @__PURE__ */ D("div", {
131
131
  className: "w-full space-y-4 px-4 py-6 md:px-8",
132
132
  children: [
133
133
  A(B).map((e) => {
134
134
  let [t] = e, n = `open:${t.workspace}/${t.identifier}`;
135
- return /* @__PURE__ */ w(j, {
135
+ return /* @__PURE__ */ E(j, {
136
136
  first: t,
137
- count: c("openCount", { count: e.length }),
137
+ count: l("openCount", { count: e.length }),
138
138
  open: !H.has(n),
139
139
  onToggle: () => K(n),
140
140
  showWorkspace: F,
141
- children: e.map((e) => /* @__PURE__ */ w(m, {
141
+ children: e.map((e) => /* @__PURE__ */ E(m, {
142
142
  workspace: e.workspace,
143
143
  decision: e
144
144
  }, e.id))
145
145
  }, n);
146
146
  }),
147
- B.length === 0 && /* @__PURE__ */ T("div", {
147
+ B.length === 0 && /* @__PURE__ */ D("div", {
148
148
  className: "py-24 text-center",
149
- children: [/* @__PURE__ */ w("p", {
149
+ children: [/* @__PURE__ */ E("p", {
150
150
  className: "text-sm font-medium",
151
- children: c("emptyTitle")
152
- }), /* @__PURE__ */ w("p", {
151
+ children: l("emptyTitle")
152
+ }), /* @__PURE__ */ E("p", {
153
153
  className: "mt-1 text-sm text-muted-foreground",
154
- children: c(F ? "emptyDescriptionAll" : "emptyDescription")
154
+ children: l(F ? "emptyDescriptionAll" : "emptyDescription")
155
155
  })]
156
156
  }),
157
- V.length > 0 && /* @__PURE__ */ T("section", {
157
+ V.length > 0 && /* @__PURE__ */ D("section", {
158
158
  className: "space-y-3 pt-6",
159
- "aria-label": c("recentlyAnswered"),
160
- children: [/* @__PURE__ */ w("h2", { children: /* @__PURE__ */ T("button", {
159
+ "aria-label": l("recentlyAnswered"),
160
+ children: [/* @__PURE__ */ E("h2", { children: /* @__PURE__ */ D("button", {
161
161
  type: "button",
162
162
  onClick: () => G((e) => !e),
163
163
  "aria-expanded": W,
164
164
  className: "-ml-1 flex items-center gap-1 rounded px-1 text-base font-semibold hover:bg-muted",
165
165
  children: [
166
- /* @__PURE__ */ w(s, { className: W ? "size-4 rotate-90" : "size-4" }),
167
- c("recentlyAnswered"),
168
- /* @__PURE__ */ w("span", {
166
+ /* @__PURE__ */ E(c, { className: W ? "size-4 rotate-90" : "size-4" }),
167
+ l("recentlyAnswered"),
168
+ /* @__PURE__ */ E("span", {
169
169
  className: "ml-1 text-xs font-normal text-muted-foreground",
170
170
  children: V.length
171
171
  })
172
172
  ]
173
173
  }) }), W && A(V).map((e) => {
174
174
  let [t] = e, n = `answered:${t.workspace}/${t.identifier}`;
175
- return /* @__PURE__ */ w(j, {
175
+ return /* @__PURE__ */ E(j, {
176
176
  first: t,
177
- count: c("answeredCount", { count: e.length }),
177
+ count: l("answeredCount", { count: e.length }),
178
178
  open: H.has(n),
179
179
  onToggle: () => K(n),
180
180
  showWorkspace: F,
181
- children: e.map((e) => /* @__PURE__ */ w(p, {
181
+ children: e.map((e) => /* @__PURE__ */ E(p, {
182
182
  workspace: e.workspace,
183
183
  decision: e
184
184
  }, e.id))
package/pages/issues.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import { basePath as e } from "../lib/base.js";
2
2
  import { ErrorMessage as t } from "../components/status.js";
3
- import { useNavigate as n } from "../lib/router.js";
4
- import { cyclesQuery as r, issuesQuery as i, labelsQuery as a, meQuery as ee, projectsQuery as te, statusesQuery as ne, teamsQuery as re } from "../api/queries.js";
5
- import { BoardIcon as ie, ChartIcon as ae, CloseIcon as oe, DownloadIcon as se, ListViewIcon as ce, SidePanelIcon as le, UploadIcon as ue, usePriorityNames as de } from "../components/icons.js";
6
- import { isViewAt as fe, viewRef as pe } from "../lib/refs.js";
7
- import { groupIssues as me, groupings as he, issueFilterOf as ge, orders as _e, sortIssues as ve, views as o } from "../lib/issueList.js";
8
- import { issuesHref as ye } from "../lib/teamPaths.js";
9
- import { usePeople as be } from "../lib/people.js";
10
- import { useIssueMenu as xe } from "../lib/issueMenu.js";
11
- import { useNewIssue as Se } from "../lib/newIssue.js";
12
- import { usePaletteSelection as Ce } from "../lib/palette.js";
13
- import { usePageTitle as we } from "../lib/pageTitle.js";
3
+ import { usePageTitle as n } from "../lib/pageTitle.js";
4
+ import { useNavigate as r } from "../lib/router.js";
5
+ import { cyclesQuery as i, issuesQuery as a, labelsQuery as ee, meQuery as te, projectsQuery as ne, statusesQuery as re, teamsQuery as ie } from "../api/queries.js";
6
+ import { BoardIcon as ae, ChartIcon as oe, CloseIcon as se, DownloadIcon as ce, ListViewIcon as le, SidePanelIcon as ue, UploadIcon as de, usePriorityNames as fe } from "../components/icons.js";
7
+ import { isViewAt as pe, viewRef as me } from "../lib/refs.js";
8
+ import { groupIssues as he, groupings as ge, issueFilterOf as _e, orders as ve, sortIssues as ye, views as o } from "../lib/issueList.js";
9
+ import { issuesHref as be } from "../lib/teamPaths.js";
10
+ import { usePeople as xe } from "../lib/people.js";
11
+ import { useIssueMenu as Se } from "../lib/issueMenu.js";
12
+ import { useNewIssue as Ce } from "../lib/newIssue.js";
13
+ import { usePaletteSelection as we } from "../lib/palette.js";
14
14
  import { useCan as Te } from "../lib/roles.js";
15
15
  import { ViewDialog as Ee } from "../components/ViewDialog.js";
16
16
  import { filtersOf as De, sameFilters as Oe, useSavedViews as ke, viewSearch as Ae } from "../lib/views.js";
@@ -29,10 +29,10 @@ import { IssueInsights as Ge } from "../components/IssueInsights.js";
29
29
  import { IssueSection as Ke } from "../components/IssueSection.js";
30
30
  import { insightsKey as qe, listTabs as Je, panelKey as Ye, storeDisplay as s, storedDisplay as Xe, withParam as c } from "../lib/issueDisplay.js";
31
31
  import { ActionMenu as Ze, Button as l, Field as Qe, IconButton as u, SearchInput as $e, Select as et, Tabs as tt, useOpenMenu as nt } from "@parallelworks/ui";
32
+ import { useParams as rt, useSearch as it } from "@tanstack/react-router";
32
33
  import { useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
33
34
  import { useTranslations as h } from "use-intl";
34
- import { Fragment as rt, jsx as g, jsxs as _ } from "react/jsx-runtime";
35
- import { useParams as it, useSearch as at } from "@tanstack/react-router";
35
+ import { Fragment as at, jsx as g, jsxs as _ } from "react/jsx-runtime";
36
36
  import { keepPreviousData as ot, useQuery as v, useSuspenseQuery as st } from "@tanstack/react-query";
37
37
  import { ListFilterBar as ct, ListFilterMenu as lt, ListSkeleton as ut } from "@parallelworks/ui/list";
38
38
  // src/pages/issues.tsx
@@ -44,7 +44,7 @@ function y(e) {
44
44
  } : r;
45
45
  }
46
46
  function b({ person: e } = {}) {
47
- let b = h("issues"), x = h("planning"), { workspace: S, key: C } = it({ strict: !1 }), w = at({ strict: !1 }), T = C ? {
47
+ let b = h("issues"), x = h("planning"), { workspace: S, key: C } = rt({ strict: !1 }), w = it({ strict: !1 }), T = C ? {
48
48
  ...w,
49
49
  team: C
50
50
  } : e ? w.creator ? {
@@ -53,7 +53,7 @@ function b({ person: e } = {}) {
53
53
  } : {
54
54
  ...w,
55
55
  assignee: e
56
- } : w, pt = n(), mt = (t) => e ? ye(S, { ...y(t) }).replace(`/${S}/issues`, `/${S}/people/${encodeURIComponent(e)}`) : ye(S, { ...t }), E = (t, n) => {
56
+ } : w, pt = r(), mt = (t) => e ? be(S, { ...y(t) }).replace(`/${S}/issues`, `/${S}/people/${encodeURIComponent(e)}`) : be(S, { ...t }), E = (t, n) => {
57
57
  let { team: r, ...i } = t;
58
58
  return pt(e ? {
59
59
  to: "/$workspace/people/$username",
@@ -81,7 +81,7 @@ function b({ person: e } = {}) {
81
81
  ht.current = (e) => E(e, !0);
82
82
  let gt = p((e) => E(c(T, "q", e), !0));
83
83
  gt.current = (e) => E(c(T, "q", e), !0);
84
- let { data: D } = st(ee), { data: O } = st(re(S)), _t = Se(), k = T.view ?? "active", [A, vt] = m(T.q ?? ""), j = p(null);
84
+ let { data: D } = st(te), { data: O } = st(ie(S)), _t = Ce(), k = T.view ?? "active", [A, vt] = m(T.q ?? ""), j = p(null);
85
85
  d(() => {
86
86
  let e = setTimeout(() => {
87
87
  (T.q ?? "") !== A && gt.current(A);
@@ -89,13 +89,13 @@ function b({ person: e } = {}) {
89
89
  return () => clearTimeout(e);
90
90
  }, [A, T.q]);
91
91
  let { data: yt } = v({
92
- ...ne(S, T.team ?? ""),
92
+ ...re(S, T.team ?? ""),
93
93
  enabled: !!T.status && !!T.team
94
- }), bt = ge(T, yt), { data: M, error: xt, isFetching: St } = v({
95
- ...i(S, bt),
94
+ }), bt = _e(T, yt), { data: M, error: xt, isFetching: St } = v({
95
+ ...a(S, bt),
96
96
  placeholderData: ot,
97
97
  enabled: !T.status || !T.team || !!yt
98
- }), N = M?.issues ?? [], Ct = de(), { nameOf: wt, avatarOf: Tt } = be(S), Et = T.saved ? {} : Xe(), P = _e.includes(T.order) ? T.order : Et.order ?? "updated", F = he.includes(T.group) ? T.group : Et.group ?? "status", I = T.layout === "board" || !T.layout && Et.layout === "board", [Dt, Ot] = m(() => {
98
+ }), N = M?.issues ?? [], Ct = fe(), { nameOf: wt, avatarOf: Tt } = xe(S), Et = T.saved ? {} : Xe(), P = ve.includes(T.order) ? T.order : Et.order ?? "updated", F = ge.includes(T.group) ? T.group : Et.group ?? "status", I = T.layout === "board" || !T.layout && Et.layout === "board", [Dt, Ot] = m(() => {
99
99
  try {
100
100
  return localStorage.getItem(Ye) !== "hidden";
101
101
  } catch {
@@ -117,7 +117,7 @@ function b({ person: e } = {}) {
117
117
  localStorage.setItem(qe, e ? "hidden" : "shown");
118
118
  } catch {}
119
119
  return !e;
120
- }), [Nt, Pt] = m("assignees"), [L, Ft] = m(null), R = L ? N.filter((e) => He(e, L.tab).includes(L.key)) : N, z = f(() => me(ve(R, P), F, {
120
+ }), [Nt, Pt] = m("assignees"), [L, Ft] = m(null), R = L ? N.filter((e) => He(e, L.tab).includes(L.key)) : N, z = f(() => he(ye(R, P), F, {
121
121
  status: (e) => b(`groups.${e}`),
122
122
  priority: (e) => Ct[e] ?? "",
123
123
  person: wt,
@@ -137,7 +137,7 @@ function b({ person: e } = {}) {
137
137
  wt,
138
138
  Tt,
139
139
  I
140
- ]), B = f(() => z.flatMap((e) => e.issues), [z]), [It, Lt] = m(0), V = B[Math.min(It, B.length - 1)], [H, U] = m(/* @__PURE__ */ new Set()), W = p(null), Rt = xe(S), zt = Me(S, O), { people: Bt } = Le(), Vt = f(() => {
140
+ ]), B = f(() => z.flatMap((e) => e.issues), [z]), [It, Lt] = m(0), V = B[Math.min(It, B.length - 1)], [H, U] = m(/* @__PURE__ */ new Set()), W = p(null), Rt = Se(S), zt = Me(S, O), { people: Bt } = Le(), Vt = f(() => {
141
141
  let e = /* @__PURE__ */ new Map();
142
142
  for (let t of Bt) {
143
143
  if (!t.identifier || t.username === D?.user.username) continue;
@@ -146,7 +146,7 @@ function b({ person: e } = {}) {
146
146
  }
147
147
  return e;
148
148
  }, [Bt, D?.user.username]), Ht = nt(), Ut = f(() => B.filter((e) => H.has(e.id)), [B, H]);
149
- Ce(Ut);
149
+ we(Ut);
150
150
  let Wt = (e) => U((t) => {
151
151
  let n = new Set(t);
152
152
  return n.has(e) ? n.delete(e) : n.add(e), n;
@@ -196,8 +196,8 @@ function b({ person: e } = {}) {
196
196
  }, []), d(() => {
197
197
  document.getElementById(`row-${V?.id}`)?.scrollIntoView({ block: "nearest" });
198
198
  }, [V]);
199
- let K = O.find((e) => e.key === T.team), q = Pe(S, T, (e) => E(Fe(T, e), !0), !!C && !T.assignee && !T.creator && !T.saved), Yt = ye(S, { ...c(T, "q", void 0) }), { views: Xt, create: Zt, update: Qt } = ke(S), J = Xt.find((e) => fe(e, T.saved)), { data: $t } = v(a(S)), { data: en } = v(te(S)), { data: tn } = v({
200
- ...r(S, K?.key ?? ""),
199
+ let K = O.find((e) => e.key === T.team), q = Pe(S, T, (e) => E(Fe(T, e), !0), !!C && !T.assignee && !T.creator && !T.saved), Yt = be(S, { ...c(T, "q", void 0) }), { views: Xt, create: Zt, update: Qt } = ke(S), J = Xt.find((e) => pe(e, T.saved)), { data: $t } = v(ee(S)), { data: en } = v(ne(S)), { data: tn } = v({
200
+ ...i(S, K?.key ?? ""),
201
201
  enabled: !!K
202
202
  });
203
203
  d(() => {
@@ -206,7 +206,7 @@ function b({ person: e } = {}) {
206
206
  let r = en?.find((e) => e.id === T.project);
207
207
  T.project && e.test(T.project) && r && (t.project = je(r));
208
208
  let i = tn?.find((e) => e.id === T.cycle);
209
- T.cycle && e.test(T.cycle) && i && (t.cycle = String(i.number)), T.saved && e.test(T.saved) && J && (t.saved = pe(J)), JSON.stringify(t) !== JSON.stringify(T) && ht.current(t);
209
+ T.cycle && e.test(T.cycle) && i && (t.cycle = String(i.number)), T.saved && e.test(T.saved) && J && (t.saved = me(J)), JSON.stringify(t) !== JSON.stringify(T) && ht.current(t);
210
210
  }, [
211
211
  T,
212
212
  $t,
@@ -220,8 +220,8 @@ function b({ person: e } = {}) {
220
220
  ...F !== "status" && { group: F },
221
221
  ...I && { layout: "board" }
222
222
  }), nn = J ? !Oe(J.filters, Y) : Object.keys(Y).length > 0, rn = Te(S, "create_issues", T.team ? { team: T.team } : void 0), an = Te(S, "save_views"), [on, sn] = m(!1), [cn, ln] = m(null), X = h("savedViews"), Z = D?.user.username, un = !J && !K && (!T.assigneeKind && T.assignee === Z && !T.creator || T.creator === Z && !T.assignee), Q = e ?? (un ? Z : void 0), $ = J?.name ?? K?.name ?? (e && e !== Z ? b("personIssues", { name: wt("user", e) }) : !T.assigneeKind && T.assignee === Z || T.creator === Z ? b("mine") : b("all")), dn = h("workspace");
223
- we(...K && !J ? [dn("issues"), K.name] : [$]);
224
- let fn = nn && /* @__PURE__ */ _(rt, { children: [J?.canEdit && /* @__PURE__ */ g(l, {
223
+ n(...K && !J ? [dn("issues"), K.name] : [$]);
224
+ let fn = nn && /* @__PURE__ */ _(at, { children: [J?.canEdit && /* @__PURE__ */ g(l, {
225
225
  type: "button",
226
226
  size: "sm",
227
227
  loading: Qt.isPending,
@@ -300,11 +300,11 @@ function b({ person: e } = {}) {
300
300
  layouts: [{
301
301
  value: "list",
302
302
  label: b("layouts.list"),
303
- icon: /* @__PURE__ */ g(ce, {})
303
+ icon: /* @__PURE__ */ g(le, {})
304
304
  }, {
305
305
  value: "board",
306
306
  label: b("layouts.board"),
307
- icon: /* @__PURE__ */ g(ie, {})
307
+ icon: /* @__PURE__ */ g(ae, {})
308
308
  }],
309
309
  layout: I ? "board" : "list",
310
310
  onLayoutChange: (e) => {
@@ -315,7 +315,7 @@ function b({ person: e } = {}) {
315
315
  label: b("orderBy"),
316
316
  children: /* @__PURE__ */ g(et, {
317
317
  value: P,
318
- items: _e.map((e) => ({
318
+ items: ve.map((e) => ({
319
319
  value: e,
320
320
  label: b(`order.${e}`)
321
321
  })),
@@ -329,7 +329,7 @@ function b({ person: e } = {}) {
329
329
  label: b("groupBy"),
330
330
  children: /* @__PURE__ */ g(et, {
331
331
  value: F,
332
- items: he.map((e) => ({
332
+ items: ge.map((e) => ({
333
333
  value: e,
334
334
  label: b(`grouping.${e}`)
335
335
  })),
@@ -344,7 +344,7 @@ function b({ person: e } = {}) {
344
344
  /* @__PURE__ */ g(u, {
345
345
  variant: "secondary",
346
346
  size: "sm",
347
- icon: /* @__PURE__ */ g(le, { className: "size-3.5" }),
347
+ icon: /* @__PURE__ */ g(ue, { className: "size-3.5" }),
348
348
  label: b(Dt ? "hidePanel" : "showPanel"),
349
349
  "aria-pressed": Dt,
350
350
  onClick: kt,
@@ -353,7 +353,7 @@ function b({ person: e } = {}) {
353
353
  /* @__PURE__ */ g(u, {
354
354
  variant: "secondary",
355
355
  size: "sm",
356
- icon: /* @__PURE__ */ g(ae, { className: "size-3.5" }),
356
+ icon: /* @__PURE__ */ g(oe, { className: "size-3.5" }),
357
357
  label: b(At ? "hideInsights" : "showInsights"),
358
358
  "aria-pressed": At,
359
359
  onClick: Mt
@@ -361,14 +361,14 @@ function b({ person: e } = {}) {
361
361
  /* @__PURE__ */ g(u, {
362
362
  variant: "secondary",
363
363
  size: "sm",
364
- icon: /* @__PURE__ */ g(se, { className: "size-3.5" }),
364
+ icon: /* @__PURE__ */ g(ce, { className: "size-3.5" }),
365
365
  label: b("exportCsv"),
366
366
  onClick: () => ft(S, bt)
367
367
  }),
368
368
  T.team && rn && /* @__PURE__ */ g(u, {
369
369
  variant: "secondary",
370
370
  size: "sm",
371
- icon: /* @__PURE__ */ g(ue, { className: "size-3.5" }),
371
+ icon: /* @__PURE__ */ g(de, { className: "size-3.5" }),
372
372
  label: b("importCsv"),
373
373
  onClick: () => We((e, t) => ln({
374
374
  name: e,
@@ -441,7 +441,7 @@ function b({ person: e } = {}) {
441
441
  /* @__PURE__ */ g(u, {
442
442
  size: "sm",
443
443
  variant: "ghost",
444
- icon: /* @__PURE__ */ g(oe, {}),
444
+ icon: /* @__PURE__ */ g(se, {}),
445
445
  label: b("clear"),
446
446
  onClick: () => U(/* @__PURE__ */ new Set())
447
447
  })
@@ -510,7 +510,7 @@ function b({ person: e } = {}) {
510
510
  });
511
511
  }
512
512
  function dt({ workspace: e, filtered: t, onCreate: n }) {
513
- let r = h("issues.empty"), { data: i = [] } = v(re(e)), a = Te(e, "manage_teams");
513
+ let r = h("issues.empty"), { data: i = [] } = v(ie(e)), a = Te(e, "manage_teams");
514
514
  return i.some((e) => !e.archivedAt) ? /* @__PURE__ */ _("div", {
515
515
  className: "mx-auto max-w-sm px-4 py-24 text-center",
516
516
  children: [