@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,20 +1,20 @@
1
1
  import { api as e, unwrap as t } from "../../../api/client.js";
2
2
  import { branchName as n } from "../../../lib/branch.js";
3
- import { Link as r, useNavigate as i } from "../../../lib/router.js";
4
- import { areasQuery as a, attachmentsQuery as o, commentsQuery as s, cyclesQuery as c, eventsQuery as l, issueDocsQuery as u, issueLinksQuery as d, issueQuery as f, labelsQuery as p, meQuery as m, projectsQuery as h, reactionsQuery as g, statusesQuery as _, teamsQuery as v } from "../../../api/queries.js";
5
- import { AreaIcon as y, BranchIcon as b, CalendarIcon as x, CloseIcon as S, CycleIcon as C, EstimateIcon as w, FileTextIcon as T, InboxIcon as E, PriorityIcon as D, ProjectIcon as O, StatusIcon as k, TriageIcon as A, usePriorityNames as j } from "../../../components/icons.js";
6
- import { Route as ee } from "./_identifier.js";
7
- import { copyItem as M } from "../../../lib/menus.js";
8
- import { useTime as N } from "../../../lib/time.js";
9
- import { DueDate as P, ProjectStatusIcon as F, SlaBadge as I, scalePoints as te, useEstimateLabel as ne } from "../../../components/Planning.js";
10
- import { docRef as re, useDocMenu as ie } from "../../../lib/docs.js";
11
- import { invalidateIssueViews as L, useUpdateIssue as ae } from "../../../api/mutations.js";
12
- import { connectorActor as oe, usePeople as se } from "../../../lib/people.js";
13
- import { PickManyBox as ce, usePickMany as le } from "../../../lib/pickMany.js";
14
- import { assigneeKey as ue, parseAssigneeKey as de, useAssigneeOptions as fe } from "../../../lib/assignees.js";
15
- import { issueURL as pe, useIssueMenu as me } from "../../../lib/issueMenu.js";
16
- import { rememberPage as he } from "../../../lib/recent.js";
17
- import { usePageTitle as ge } from "../../../lib/pageTitle.js";
3
+ import { usePageTitle as r } from "../../../lib/pageTitle.js";
4
+ import { Link as i, useNavigate as a } from "../../../lib/router.js";
5
+ import { areasQuery as o, attachmentsQuery as s, commentsQuery as c, cyclesQuery as l, eventsQuery as u, issueDocsQuery as d, issueLinksQuery as f, issueQuery as p, labelsQuery as m, meQuery as h, projectsQuery as g, reactionsQuery as _, statusesQuery as v, teamsQuery as y } from "../../../api/queries.js";
6
+ import { AreaIcon as b, BranchIcon as x, CalendarIcon as S, CloseIcon as C, CycleIcon as w, EstimateIcon as T, FileTextIcon as E, InboxIcon as D, PriorityIcon as O, ProjectIcon as k, StatusIcon as ee, TriageIcon as A, usePriorityNames as j } from "../../../components/icons.js";
7
+ import { Route as M } from "./_identifier.js";
8
+ import { copyItem as N } from "../../../lib/menus.js";
9
+ import { docRef as P, useDocMenu as F } from "../../../lib/docs.js";
10
+ import { invalidateIssueViews as I, useUpdateIssue as te } from "../../../api/mutations.js";
11
+ import { useTime as ne } from "../../../lib/time.js";
12
+ import { DueDate as L, ProjectStatusIcon as re, SlaBadge as ie, scalePoints as ae, useEstimateLabel as oe } from "../../../components/Planning.js";
13
+ import { connectorActor as se, usePeople as ce } from "../../../lib/people.js";
14
+ import { PickManyBox as le, usePickMany as ue } from "../../../lib/pickMany.js";
15
+ import { assigneeKey as de, parseAssigneeKey as fe, useAssigneeOptions as pe } from "../../../lib/assignees.js";
16
+ import { issueURL as me, useIssueMenu as he } from "../../../lib/issueMenu.js";
17
+ import { rememberPage as ge } from "../../../lib/recent.js";
18
18
  import { issueScope as _e, useCan as ve, useCanTriage as ye } from "../../../lib/roles.js";
19
19
  import { useConfirm as be } from "../../../lib/confirm.js";
20
20
  import { useLinkedIssues as xe } from "../../../lib/linkedIssues.js";
@@ -51,99 +51,99 @@ import { ArchiveIcon as yt } from "@parallelworks/ui/icons";
51
51
  import { MoreButton as bt } from "@parallelworks/ui/list";
52
52
  // src/routes/$workspace/issues/$identifier.tsx?tsr-split=component
53
53
  function xt() {
54
- let a = G("issue"), o = N(), s = vt(), c = G("common"), { workspace: l, identifier: u } = ee.useParams(), { data: p } = Q(f(l, u)), { data: h } = Q(v(l)), { data: g } = Q(m), { data: _ = [] } = X(d(l, u)), [y, x] = W();
54
+ let o = G("issue"), s = ne(), c = vt(), l = G("common"), { workspace: u, identifier: d } = M.useParams(), { data: m } = Q(p(u, d)), { data: g } = Q(y(u)), { data: _ } = Q(h), { data: v = [] } = X(f(u, d)), [b, S] = W();
55
55
  ke({
56
- identifier: p.identifier,
57
- ...y && { field: y }
58
- }), ge(`${p.identifier} ${p.title}`), Ae(l, p.identifier);
59
- let S = i(), C = n(p.identifier, p.title);
56
+ identifier: m.identifier,
57
+ ...b && { field: b }
58
+ }), r(`${m.identifier} ${m.title}`), Ae(u, m.identifier);
59
+ let C = a(), w = n(m.identifier, m.title);
60
60
  gt(() => {
61
- window.location.pathname.endsWith(`/issues/${C}`) || S({
61
+ window.location.pathname.endsWith(`/issues/${w}`) || C({
62
62
  to: "/$workspace/issues/$identifier",
63
63
  params: {
64
- workspace: l,
65
- identifier: p.identifier
64
+ workspace: u,
65
+ identifier: m.identifier
66
66
  },
67
67
  search: !0,
68
68
  hash: !0,
69
69
  replace: !0
70
70
  });
71
71
  }, [
72
+ w,
72
73
  C,
73
- S,
74
- l,
75
- p.identifier
74
+ u,
75
+ m.identifier
76
76
  ]);
77
- let w = ve(l, "delete_issues", _e(p)), T = Z(), { confirm: E, dialog: D } = be(), O = Y({
77
+ let T = ve(u, "delete_issues", _e(m)), E = Z(), { confirm: D, dialog: O } = be(), k = Y({
78
78
  mutationFn: async () => t(await e.POST("/api/v1/workspaces/{workspace}/issues/{identifier}/restore", { params: { path: {
79
- workspace: l,
80
- identifier: p.identifier
79
+ workspace: u,
80
+ identifier: m.identifier
81
81
  } } })),
82
82
  onSuccess: (e) => {
83
- T.setQueryData(f(l, p.identifier).queryKey, e), L(T, l, p.identifier);
83
+ E.setQueryData(p(u, m.identifier).queryKey, e), I(E, u, m.identifier);
84
84
  }
85
- }), k = Y({
85
+ }), ee = Y({
86
86
  mutationFn: async () => t(await e.DELETE("/api/v1/workspaces/{workspace}/issues/{identifier}", { params: { path: {
87
- workspace: l,
88
- identifier: p.identifier
87
+ workspace: u,
88
+ identifier: m.identifier
89
89
  } } })),
90
90
  onSuccess: () => {
91
- ft.success(a("deleted", { identifier: p.identifier })), L(T, l);
92
- let e = h.find((e) => e.id === p.teamId)?.key;
93
- S(e ? {
91
+ ft.success(o("deleted", { identifier: m.identifier })), I(E, u);
92
+ let e = g.find((e) => e.id === m.teamId)?.key;
93
+ C(e ? {
94
94
  to: "/$workspace/teams/$key/issues",
95
95
  params: {
96
- workspace: l,
96
+ workspace: u,
97
97
  key: e
98
98
  }
99
99
  } : {
100
100
  to: "/$workspace/issues",
101
- params: { workspace: l }
101
+ params: { workspace: u }
102
102
  });
103
103
  }
104
- }), A = mt((e) => S({
104
+ }), A = mt((e) => C({
105
105
  to: "/$workspace/issues/$identifier",
106
106
  params: {
107
- workspace: l,
107
+ workspace: u,
108
108
  identifier: e
109
109
  }
110
- }), [S, l]);
111
- xe(l, p.body, A), gt(() => {
112
- he(l, {
110
+ }), [C, u]);
111
+ xe(u, m.body, A), gt(() => {
112
+ ge(u, {
113
113
  kind: "issue",
114
- href: `/${l}/issues/${p.identifier}`,
115
- label: `${p.identifier} ${p.title}`
114
+ href: `/${u}/issues/${m.identifier}`,
115
+ label: `${m.identifier} ${m.title}`
116
116
  });
117
117
  }, [
118
- l,
119
- p.identifier,
120
- p.title
118
+ u,
119
+ m.identifier,
120
+ m.title
121
121
  ]);
122
- let j = Oe({ issue: p.identifier }, g?.user.username), M = h.find((e) => e.id === p.teamId), P = ae(l, u), [F, I] = W(null), te = H(), ne = me(l);
122
+ let j = Oe({ issue: m.identifier }, _?.user.username), N = g.find((e) => e.id === m.teamId), P = te(u, d), [F, L] = W(null), re = H(), ie = he(u);
123
123
  return je({
124
- s: () => I("status"),
125
- p: () => I("priority"),
126
- a: () => I("assignees"),
127
- l: () => I("labels"),
128
- Escape: () => S({
124
+ s: () => L("status"),
125
+ p: () => L("priority"),
126
+ a: () => L("assignees"),
127
+ l: () => L("labels"),
128
+ Escape: () => C({
129
129
  to: "/$workspace/issues",
130
- params: { workspace: l }
130
+ params: { workspace: u }
131
131
  })
132
132
  }, F === null), /* @__PURE__ */ J("div", {
133
133
  className: "flex h-full flex-col",
134
134
  children: [
135
135
  /* @__PURE__ */ J("header", {
136
136
  className: "flex h-12 shrink-0 items-center gap-2 border-b border-border px-4 text-sm md:px-5",
137
- onContextMenu: (e) => te(e, ne([p])),
137
+ onContextMenu: (e) => re(e, ie([m])),
138
138
  children: [
139
- /* @__PURE__ */ q(r, {
140
- to: M ? "/$workspace/teams/$key/issues" : "/$workspace/issues",
139
+ /* @__PURE__ */ q(i, {
140
+ to: N ? "/$workspace/teams/$key/issues" : "/$workspace/issues",
141
141
  params: {
142
- workspace: l,
143
- key: M?.key ?? ""
142
+ workspace: u,
143
+ key: N?.key ?? ""
144
144
  },
145
145
  className: "text-muted-foreground hover:text-foreground",
146
- children: M?.name ?? a("issues")
146
+ children: N?.name ?? o("issues")
147
147
  }),
148
148
  /* @__PURE__ */ q("span", {
149
149
  className: "text-muted-foreground",
@@ -152,51 +152,51 @@ function xt() {
152
152
  }),
153
153
  /* @__PURE__ */ q("span", {
154
154
  className: "shrink-0 font-medium whitespace-nowrap",
155
- children: p.identifier
155
+ children: m.identifier
156
156
  }),
157
157
  /* @__PURE__ */ q(Pe, {
158
- workspace: l,
158
+ workspace: u,
159
159
  kind: "issue",
160
- target: p.id
160
+ target: m.id
161
161
  }),
162
162
  /* @__PURE__ */ q(Ze, {
163
- workspace: l,
164
- identifier: p.identifier
163
+ workspace: u,
164
+ identifier: m.identifier
165
165
  }),
166
166
  /* @__PURE__ */ q(nt, {
167
- text: n(p.identifier, p.title),
168
- label: a("copyBranchName"),
169
- icon: /* @__PURE__ */ q(b, {}),
167
+ text: n(m.identifier, m.title),
168
+ label: o("copyBranchName"),
169
+ icon: /* @__PURE__ */ q(x, {}),
170
170
  size: "sm",
171
171
  variant: "ghost",
172
- success: a("copiedBranchName", { name: n(p.identifier, p.title) }),
173
- failure: a("copyFailed"),
172
+ success: o("copiedBranchName", { name: n(m.identifier, m.title) }),
173
+ failure: o("copyFailed"),
174
174
  className: "max-sm:hidden"
175
175
  }),
176
- /* @__PURE__ */ q(He, { links: _ }),
176
+ /* @__PURE__ */ q(He, { links: v }),
177
177
  /* @__PURE__ */ J("span", {
178
178
  className: "ml-auto flex items-center gap-3",
179
179
  children: [
180
180
  P.isPending && /* @__PURE__ */ q("span", {
181
181
  className: "text-xs text-muted-foreground",
182
- children: c("saving")
182
+ children: l("saving")
183
183
  }),
184
184
  /* @__PURE__ */ q(ze, {
185
- workspace: l,
185
+ workspace: u,
186
186
  others: j
187
187
  }),
188
188
  /* @__PURE__ */ q(bt, {
189
- items: () => [...ne([p]), ...w ? [{
190
- label: a("deleteIssue"),
189
+ items: () => [...ie([m]), ...T ? [{
190
+ label: o("deleteIssue"),
191
191
  destructive: !0,
192
- onClick: () => E({
193
- title: a("deleteTitle", { identifier: p.identifier }),
194
- description: a("deleteDescription"),
195
- confirmLabel: a("deleteIssue"),
196
- onConfirm: () => k.mutateAsync()
192
+ onClick: () => D({
193
+ title: o("deleteTitle", { identifier: m.identifier }),
194
+ description: o("deleteDescription"),
195
+ confirmLabel: o("deleteIssue"),
196
+ onConfirm: () => ee.mutateAsync()
197
197
  })
198
198
  }] : []],
199
- label: c("moreActionsFor", { name: p.identifier }),
199
+ label: l("moreActionsFor", { name: m.identifier }),
200
200
  visible: !0
201
201
  })
202
202
  ]
@@ -204,11 +204,11 @@ function xt() {
204
204
  P.isError && /* @__PURE__ */ q(it, {
205
205
  inline: !0,
206
206
  className: "ml-auto text-xs",
207
- children: s(P.error)
207
+ children: c(P.error)
208
208
  })
209
209
  ]
210
210
  }),
211
- D,
211
+ O,
212
212
  /* @__PURE__ */ J("div", {
213
213
  className: "flex min-h-0 flex-1 flex-col overflow-y-auto md:flex-row md:overflow-hidden",
214
214
  children: [/* @__PURE__ */ q("div", {
@@ -217,90 +217,90 @@ function xt() {
217
217
  className: "w-full px-4 pt-6 pb-24 md:px-8 md:pt-8",
218
218
  children: [
219
219
  /* @__PURE__ */ J(Lt.Provider, {
220
- value: x,
220
+ value: S,
221
221
  children: [
222
- p.triage && /* @__PURE__ */ q(St, {
223
- workspace: l,
224
- issue: p
222
+ m.triage && /* @__PURE__ */ q(St, {
223
+ workspace: u,
224
+ issue: m
225
225
  }),
226
- p.archivedAt && /* @__PURE__ */ q(et, {
226
+ m.archivedAt && /* @__PURE__ */ q(et, {
227
227
  tone: "muted",
228
228
  icon: /* @__PURE__ */ q(yt, {}),
229
229
  className: "mb-5",
230
230
  children: /* @__PURE__ */ J("span", {
231
231
  className: "flex flex-wrap items-center gap-x-3 gap-y-1",
232
- children: [a("archivedNote", { when: o.day(p.archivedAt.slice(0, 10)) }), /* @__PURE__ */ q(z, {
232
+ children: [o("archivedNote", { when: s.day(m.archivedAt.slice(0, 10)) }), /* @__PURE__ */ q(z, {
233
233
  type: "button",
234
234
  size: "sm",
235
- onClick: () => O.mutate(),
236
- loading: O.isPending,
237
- children: a("restore")
235
+ onClick: () => k.mutate(),
236
+ loading: k.isPending,
237
+ children: o("restore")
238
238
  })]
239
239
  })
240
240
  }),
241
241
  /* @__PURE__ */ q(Ct, {
242
- issue: p,
242
+ issue: m,
243
243
  onSave: (e) => P.mutate({ title: e })
244
244
  }),
245
245
  /* @__PURE__ */ q(Re, {
246
- workspace: l,
246
+ workspace: u,
247
247
  others: j,
248
248
  field: "title"
249
249
  }),
250
250
  /* @__PURE__ */ q(wt, {
251
- workspace: l,
252
- issue: p
251
+ workspace: u,
252
+ issue: m
253
253
  }),
254
254
  /* @__PURE__ */ q(Re, {
255
- workspace: l,
255
+ workspace: u,
256
256
  others: j,
257
257
  field: "body"
258
258
  }),
259
259
  /* @__PURE__ */ q(Je, {
260
- workspace: l,
261
- issue: p
260
+ workspace: u,
261
+ issue: m
262
262
  }),
263
263
  /* @__PURE__ */ q(Ve, {
264
- workspace: l,
265
- identifier: p.identifier,
266
- enabled: !!M?.customerRequestsEnabled
264
+ workspace: u,
265
+ identifier: m.identifier,
266
+ enabled: !!N?.customerRequestsEnabled
267
267
  }),
268
268
  /* @__PURE__ */ q(Tt, {
269
- workspace: l,
270
- identifier: u
269
+ workspace: u,
270
+ identifier: d
271
271
  }),
272
272
  /* @__PURE__ */ q(Ge, {
273
- workspace: l,
274
- identifier: u,
275
- title: p.title
273
+ workspace: u,
274
+ identifier: d,
275
+ title: m.title
276
276
  }),
277
277
  /* @__PURE__ */ q(Ne, {
278
- workspace: l,
279
- identifier: u
278
+ workspace: u,
279
+ identifier: d
280
280
  }),
281
281
  /* @__PURE__ */ q(jt, {
282
- workspace: l,
283
- identifier: u,
282
+ workspace: u,
283
+ identifier: d,
284
284
  others: j
285
285
  })
286
286
  ]
287
287
  }),
288
288
  /* @__PURE__ */ q(At, {
289
- workspace: l,
290
- identifier: u
289
+ workspace: u,
290
+ identifier: d
291
291
  }),
292
292
  /* @__PURE__ */ q(we, {
293
- workspace: l,
294
- identifier: u
293
+ workspace: u,
294
+ identifier: d
295
295
  })
296
296
  ]
297
297
  })
298
298
  }), /* @__PURE__ */ q(Et, {
299
- workspace: l,
300
- issue: p,
301
- team: M,
299
+ workspace: u,
300
+ issue: m,
301
+ team: N,
302
302
  open: F,
303
- setOpen: I,
303
+ setOpen: L,
304
304
  update: (e) => P.mutate(e)
305
305
  })]
306
306
  })
@@ -367,7 +367,7 @@ function Ct({ issue: e, onSave: t }) {
367
367
  })] });
368
368
  }
369
369
  function wt({ workspace: e, issue: t }) {
370
- let n = G("issue"), r = G("common"), i = ht(Lt), { data: a } = Q(m), o = U(null), s = _t(() => ({
370
+ let n = G("issue"), r = G("common"), i = ht(Lt), { data: a } = Q(h), o = U(null), s = _t(() => ({
371
371
  name: a?.user.name ?? n("someone"),
372
372
  color: Fe(a?.user.username ?? "")
373
373
  }), [
@@ -379,7 +379,7 @@ function wt({ workspace: e, issue: t }) {
379
379
  target: { issue: t.identifier },
380
380
  user: s,
381
381
  getMarkdown: o
382
- }), u = U(null), d = Ee(e, t.identifier), { data: f = [] } = X(g(e, t.identifier)), p = ve(e, "comment", _e(t));
382
+ }), u = U(null), d = Ee(e, t.identifier), { data: f = [] } = X(_(e, t.identifier)), p = ve(e, "comment", _e(t));
383
383
  return /* @__PURE__ */ J("div", {
384
384
  className: "group mt-4 min-h-32",
385
385
  children: [
@@ -423,8 +423,8 @@ function wt({ workspace: e, issue: t }) {
423
423
  });
424
424
  }
425
425
  function Tt({ workspace: e, identifier: t }) {
426
- let n = G("issue"), { data: i } = Q(u(e, t)), a = H(), o = ie(e);
427
- return i.length === 0 ? null : /* @__PURE__ */ J("section", {
426
+ let n = G("issue"), { data: r } = Q(d(e, t)), a = H(), o = F(e);
427
+ return r.length === 0 ? null : /* @__PURE__ */ J("section", {
428
428
  className: "mt-6",
429
429
  "aria-label": n("docs"),
430
430
  children: [/* @__PURE__ */ q("h2", {
@@ -432,15 +432,15 @@ function Tt({ workspace: e, identifier: t }) {
432
432
  children: n("docs")
433
433
  }), /* @__PURE__ */ q("ul", {
434
434
  className: "mt-1 flex flex-wrap gap-1.5",
435
- children: i.map((t) => /* @__PURE__ */ q("li", { children: /* @__PURE__ */ J(r, {
435
+ children: r.map((t) => /* @__PURE__ */ q("li", { children: /* @__PURE__ */ J(i, {
436
436
  to: "/$workspace/docs/$doc",
437
437
  params: {
438
438
  workspace: e,
439
- doc: re(t)
439
+ doc: P(t)
440
440
  },
441
441
  onContextMenu: (e) => a(e, o(t)),
442
442
  className: `${ut({ size: "sm" })} max-w-72`,
443
- children: [/* @__PURE__ */ q(T, { className: "size-3.5 text-muted-foreground" }), /* @__PURE__ */ q("span", {
443
+ children: [/* @__PURE__ */ q(E, { className: "size-3.5 text-muted-foreground" }), /* @__PURE__ */ q("span", {
444
444
  className: "truncate",
445
445
  children: t.title
446
446
  })]
@@ -448,58 +448,58 @@ function Tt({ workspace: e, identifier: t }) {
448
448
  })]
449
449
  });
450
450
  }
451
- function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c }) {
452
- let l = G("relations"), u = a?.key, f = G("issue.properties"), m = G("common"), h = j(), { data: g = [] } = X({
453
- ..._(n, u ?? ""),
451
+ function Et({ workspace: n, issue: r, team: i, open: o, setOpen: s, update: c }) {
452
+ let l = G("relations"), u = i?.key, d = G("issue.properties"), p = G("common"), h = j(), { data: g = [] } = X({
453
+ ...v(n, u ?? ""),
454
454
  enabled: !!u
455
- }), { data: v = [] } = X(p(n)), { data: y = [] } = X(d(n, r.identifier)), { nameOf: b, actorName: x, avatarOf: S } = se(n), C = Z(), w = Y({
455
+ }), { data: _ = [] } = X(m(n)), { data: y = [] } = X(f(n, r.identifier)), { nameOf: b, actorName: x, avatarOf: S } = ce(n), C = Z(), w = Y({
456
456
  mutationFn: async (r) => t(await e.POST("/api/v1/workspaces/{workspace}/labels", {
457
457
  params: { path: { workspace: n } },
458
458
  body: {
459
459
  name: r,
460
- color: Dt[v.length % Dt.length] ?? "#d73a4a"
460
+ color: Dt[_.length % Dt.length] ?? "#d73a4a"
461
461
  }
462
462
  })),
463
463
  onSuccess: (e) => {
464
- C.invalidateQueries({ queryKey: p(n).queryKey }), c({ addLabels: [e.id] });
464
+ C.invalidateQueries({ queryKey: m(n).queryKey }), c({ addLabels: [e.id] });
465
465
  }
466
- }), T = r.assignees.map(ue), E = fe(n, !0), O = (e) => (t) => s(t ? e : null), A = le(o === "assignees", () => s(null)), ee = le(o === "labels", () => s(null)), M = "flex h-8 w-full items-center gap-2 rounded-md px-2 text-sm hover:bg-muted", N = H(), P = me(n), F = i(), I = (e, t) => {
466
+ }), T = r.assignees.map(de), E = pe(n, !0), D = (e) => (t) => s(t ? e : null), k = ue(o === "assignees", () => s(null)), A = ue(o === "labels", () => s(null)), M = "flex h-8 w-full items-center gap-2 rounded-md px-2 text-sm hover:bg-muted", N = H(), P = he(n), F = a(), I = (e, t) => {
467
467
  e.stopPropagation(), N(e, t);
468
468
  };
469
469
  return /* @__PURE__ */ J("aside", {
470
470
  className: "order-first grid shrink-0 grid-cols-2 gap-4 border-b border-border px-4 py-4 md:order-none md:block md:w-72 md:space-y-5 md:overflow-y-auto md:border-b-0 md:border-l md:py-6",
471
- "aria-label": f("title"),
471
+ "aria-label": d("title"),
472
472
  onContextMenu: (e) => N(e, P([r])),
473
473
  children: [
474
474
  /* @__PURE__ */ q($, {
475
- label: m("status"),
475
+ label: p("status"),
476
476
  shortcut: "S",
477
477
  children: /* @__PURE__ */ q(B, {
478
- "aria-label": m("status"),
478
+ "aria-label": p("status"),
479
479
  open: o === "status",
480
- onOpenChange: O("status"),
480
+ onOpenChange: D("status"),
481
481
  items: g.map((e) => ({
482
482
  value: e.id,
483
483
  label: e.name,
484
- icon: /* @__PURE__ */ q(k, { category: e.category })
484
+ icon: /* @__PURE__ */ q(ee, { category: e.category })
485
485
  })),
486
486
  value: r.status.id,
487
487
  onValueChange: (e) => e !== null && e !== r.status.id && c({ statusId: e }),
488
- placeholder: f("changeStatus"),
488
+ placeholder: d("changeStatus"),
489
489
  trigger: /* @__PURE__ */ J("button", {
490
490
  type: "button",
491
491
  className: M,
492
- children: [/* @__PURE__ */ q(k, { category: r.status.category }), r.status.name]
492
+ children: [/* @__PURE__ */ q(ee, { category: r.status.category }), r.status.name]
493
493
  })
494
494
  })
495
495
  }),
496
496
  /* @__PURE__ */ q($, {
497
- label: m("priority"),
497
+ label: p("priority"),
498
498
  shortcut: "P",
499
499
  children: /* @__PURE__ */ q(B, {
500
- "aria-label": m("priority"),
500
+ "aria-label": p("priority"),
501
501
  open: o === "priority",
502
- onOpenChange: O("priority"),
502
+ onOpenChange: D("priority"),
503
503
  items: [
504
504
  1,
505
505
  2,
@@ -509,53 +509,53 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
509
509
  ].map((e) => ({
510
510
  value: String(e),
511
511
  label: h[e] ?? "",
512
- icon: /* @__PURE__ */ q(D, { priority: e })
512
+ icon: /* @__PURE__ */ q(O, { priority: e })
513
513
  })),
514
514
  value: String(r.priority),
515
515
  onValueChange: (e) => e !== null && c({ priority: Number(e) }),
516
- placeholder: f("setPriority"),
516
+ placeholder: d("setPriority"),
517
517
  trigger: /* @__PURE__ */ J("button", {
518
518
  type: "button",
519
519
  className: M,
520
- children: [/* @__PURE__ */ q(D, { priority: r.priority }), h[r.priority]]
520
+ children: [/* @__PURE__ */ q(O, { priority: r.priority }), h[r.priority]]
521
521
  })
522
522
  })
523
523
  }),
524
524
  /* @__PURE__ */ q($, {
525
- label: f("assignees"),
525
+ label: d("assignees"),
526
526
  shortcut: "A",
527
527
  children: /* @__PURE__ */ q(B, {
528
- "aria-label": f("assignees"),
528
+ "aria-label": d("assignees"),
529
529
  multiple: !0,
530
530
  open: o === "assignees",
531
- onOpenChange: O("assignees"),
531
+ onOpenChange: D("assignees"),
532
532
  items: E,
533
533
  value: T,
534
534
  onValueChange: (e) => {
535
535
  let t = e.filter((e) => !T.includes(e)), n = T.filter((t) => !e.includes(t));
536
536
  c({
537
- ...t.length > 0 && { addAssignees: t.map(de) },
538
- ...n.length > 0 && { removeAssignees: n.map(de) }
539
- }), A();
537
+ ...t.length > 0 && { addAssignees: t.map(fe) },
538
+ ...n.length > 0 && { removeAssignees: n.map(fe) }
539
+ }), k();
540
540
  },
541
- placeholder: f("assignTo"),
541
+ placeholder: d("assignTo"),
542
542
  trigger: /* @__PURE__ */ J("button", {
543
543
  type: "button",
544
544
  className: `${M} h-auto min-h-8 flex-wrap py-1`,
545
545
  children: [r.assignees.length === 0 && /* @__PURE__ */ q("span", {
546
546
  className: "text-muted-foreground",
547
- children: f("unassigned")
547
+ children: d("unassigned")
548
548
  }), r.assignees.map((e) => {
549
549
  let t = b(e.kind, e.handle);
550
550
  return /* @__PURE__ */ q("span", {
551
551
  onContextMenu: (r) => I(r, [{
552
- label: f("unassign", { name: t }),
552
+ label: d("unassign", { name: t }),
553
553
  onClick: () => c({ removeAssignees: [{
554
554
  kind: e.kind,
555
555
  handle: e.handle
556
556
  }] })
557
557
  }, {
558
- label: f("viewTheirIssues"),
558
+ label: d("viewTheirIssues"),
559
559
  onClick: () => F({
560
560
  to: "/$workspace/issues",
561
561
  params: { workspace: n },
@@ -585,19 +585,19 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
585
585
  })
586
586
  }),
587
587
  /* @__PURE__ */ q($, {
588
- label: m("labels"),
588
+ label: p("labels"),
589
589
  shortcut: "L",
590
590
  children: /* @__PURE__ */ q(B, {
591
- "aria-label": m("labels"),
591
+ "aria-label": p("labels"),
592
592
  multiple: !0,
593
593
  open: o === "labels",
594
- onOpenChange: O("labels"),
595
- items: v.map((e) => ({
594
+ onOpenChange: D("labels"),
595
+ items: _.map((e) => ({
596
596
  value: e.id,
597
597
  label: e.name,
598
598
  icon: /* @__PURE__ */ J("span", {
599
599
  className: "flex items-center gap-2",
600
- children: [/* @__PURE__ */ q(ce, {}), /* @__PURE__ */ q("span", {
600
+ children: [/* @__PURE__ */ q(le, {}), /* @__PURE__ */ q("span", {
601
601
  className: "size-2.5 rounded-full",
602
602
  style: { background: e.color }
603
603
  })]
@@ -605,7 +605,7 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
605
605
  })),
606
606
  value: r.labels.map((e) => e.id),
607
607
  onValueChange: (e) => {
608
- ee();
608
+ A();
609
609
  let t = r.labels.map((e) => e.id), n = e.filter((e) => !t.includes(e)), i = t.filter((t) => !e.includes(t));
610
610
  c({
611
611
  ...n.length > 0 && { addLabels: n },
@@ -613,19 +613,19 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
613
613
  });
614
614
  },
615
615
  onCreate: (e) => w.mutate(e),
616
- placeholder: f("addLabels"),
616
+ placeholder: d("addLabels"),
617
617
  trigger: /* @__PURE__ */ J("button", {
618
618
  type: "button",
619
619
  className: `${M} h-auto min-h-8 flex-wrap py-1`,
620
620
  children: [r.labels.length === 0 && /* @__PURE__ */ q("span", {
621
621
  className: "text-muted-foreground",
622
- children: f("noLabels")
622
+ children: d("noLabels")
623
623
  }), r.labels.map((e) => /* @__PURE__ */ J("span", {
624
624
  onContextMenu: (t) => I(t, [{
625
- label: f("removeLabel", { name: e.name }),
625
+ label: d("removeLabel", { name: e.name }),
626
626
  onClick: () => c({ removeLabels: [e.id] })
627
627
  }, {
628
- label: f("viewLabelIssues"),
628
+ label: d("viewLabelIssues"),
629
629
  onClick: () => F({
630
630
  to: "/$workspace/issues",
631
631
  params: { workspace: n },
@@ -656,12 +656,12 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
656
656
  /* @__PURE__ */ q(kt, {
657
657
  workspace: n,
658
658
  issue: r,
659
- team: a,
659
+ team: i,
660
660
  update: c,
661
661
  row: M
662
662
  }),
663
663
  /* @__PURE__ */ q($, {
664
- label: f("created"),
664
+ label: d("created"),
665
665
  children: /* @__PURE__ */ J("p", {
666
666
  className: "flex items-center gap-2 px-2 text-sm",
667
667
  children: [/* @__PURE__ */ q(Se, {
@@ -682,14 +682,14 @@ function Et({ workspace: n, issue: r, team: a, open: o, setOpen: s, update: c })
682
682
  })
683
683
  }),
684
684
  /* @__PURE__ */ q($, {
685
- label: f("timeInStatus"),
685
+ label: d("timeInStatus"),
686
686
  children: /* @__PURE__ */ q(Xe, {
687
687
  workspace: n,
688
688
  identifier: r.identifier
689
689
  })
690
690
  }),
691
691
  y.length > 0 && /* @__PURE__ */ q($, {
692
- label: f("syncedWith"),
692
+ label: d("syncedWith"),
693
693
  children: /* @__PURE__ */ q(Ue, { links: y })
694
694
  })
695
695
  ]
@@ -705,16 +705,16 @@ var Dt = [
705
705
  "#1a7f37"
706
706
  ];
707
707
  function Ot({ workspace: e, origin: t, className: n }) {
708
- let i = "size-3.5 shrink-0 text-muted-foreground", a = t.title.replace(/[*_`#>[\]]/g, "").replace(/\s+/g, " ").trim();
708
+ let r = "size-3.5 shrink-0 text-muted-foreground", a = t.title.replace(/[*_`#>[\]]/g, "").replace(/\s+/g, " ").trim();
709
709
  switch (t.kind) {
710
- case "decision": return /* @__PURE__ */ J(r, {
710
+ case "decision": return /* @__PURE__ */ J(i, {
711
711
  to: "/$workspace/issues/$identifier",
712
712
  params: {
713
713
  workspace: e,
714
714
  identifier: t.key
715
715
  },
716
716
  className: n,
717
- children: [/* @__PURE__ */ q(E, { className: i }), /* @__PURE__ */ q(lt, {
717
+ children: [/* @__PURE__ */ q(D, { className: r }), /* @__PURE__ */ q(lt, {
718
718
  content: a,
719
719
  overflowOnly: !0,
720
720
  children: /* @__PURE__ */ q("span", {
@@ -723,26 +723,26 @@ function Ot({ workspace: e, origin: t, className: n }) {
723
723
  })
724
724
  })]
725
725
  });
726
- case "area": return /* @__PURE__ */ J(r, {
726
+ case "area": return /* @__PURE__ */ J(i, {
727
727
  to: "/$workspace/areas/$area",
728
728
  params: {
729
729
  workspace: e,
730
730
  area: t.key
731
731
  },
732
732
  className: n,
733
- children: [/* @__PURE__ */ q(y, { className: i }), /* @__PURE__ */ q("span", {
733
+ children: [/* @__PURE__ */ q(b, { className: r }), /* @__PURE__ */ q("span", {
734
734
  className: "truncate",
735
735
  children: a
736
736
  })]
737
737
  });
738
- default: return /* @__PURE__ */ J(r, {
738
+ default: return /* @__PURE__ */ J(i, {
739
739
  to: "/$workspace/docs/$doc",
740
740
  params: {
741
741
  workspace: e,
742
742
  doc: t.key
743
743
  },
744
744
  className: n,
745
- children: [/* @__PURE__ */ q(T, { className: i }), /* @__PURE__ */ q("span", {
745
+ children: [/* @__PURE__ */ q(E, { className: r }), /* @__PURE__ */ q("span", {
746
746
  className: "truncate",
747
747
  children: a
748
748
  })]
@@ -750,13 +750,13 @@ function Ot({ workspace: e, origin: t, className: n }) {
750
750
  }
751
751
  }
752
752
  function kt({ workspace: e, issue: t, team: n, update: r, row: i }) {
753
- let o = G("planning"), s = G("flow"), l = N(), u = ne(), { data: d = [] } = X(h(e)), f = d.find((e) => e.id === t.project?.id), { data: p = [] } = X({
754
- ...c(e, n?.key ?? ""),
753
+ let a = G("planning"), s = G("flow"), c = ne(), u = oe(), { data: d = [] } = X(g(e)), f = d.find((e) => e.id === t.project?.id), { data: p = [] } = X({
754
+ ...l(e, n?.key ?? ""),
755
755
  enabled: !!n?.cyclesEnabled
756
- }), m = n?.estimateScale ?? "none", g = t.status.category === "completed" || t.status.category === "canceled", _ = (e) => e.name ? o("cycleNamed", {
756
+ }), m = n?.estimateScale ?? "none", h = t.status.category === "completed" || t.status.category === "canceled", _ = (e) => e.name ? a("cycleNamed", {
757
757
  number: e.number,
758
758
  name: e.name
759
- }) : o("cycle", { number: e.number }), v = p.filter((e) => e.state !== "past" || e.id === t.cycle?.id), { data: b = [] } = X(a(e)), T = b.filter((e) => !e.teamId || e.teamId === t.teamId);
759
+ }) : a("cycle", { number: e.number }), v = p.filter((e) => e.state !== "past" || e.id === t.cycle?.id), { data: y = [] } = X(o(e)), x = y.filter((e) => !e.teamId || e.teamId === t.teamId);
760
760
  return /* @__PURE__ */ J(K, { children: [
761
761
  n && n.flow.length > 0 && /* @__PURE__ */ q($, {
762
762
  label: s("stage"),
@@ -774,7 +774,7 @@ function kt({ workspace: e, issue: t, team: n, update: r, row: i }) {
774
774
  trigger: /* @__PURE__ */ J("button", {
775
775
  type: "button",
776
776
  className: i,
777
- children: [/* @__PURE__ */ q(C, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.stage ? /* @__PURE__ */ q("span", {
777
+ children: [/* @__PURE__ */ q(w, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.stage ? /* @__PURE__ */ q("span", {
778
778
  className: "truncate",
779
779
  children: s(`stages.${t.stage}`)
780
780
  }) : /* @__PURE__ */ q("span", {
@@ -785,34 +785,34 @@ function kt({ workspace: e, issue: t, team: n, update: r, row: i }) {
785
785
  })
786
786
  }),
787
787
  /* @__PURE__ */ q($, {
788
- label: o("area"),
788
+ label: a("area"),
789
789
  children: /* @__PURE__ */ q(V, {
790
- "aria-label": o("area"),
790
+ "aria-label": a("area"),
791
791
  value: t.area?.key ?? "",
792
792
  onValueChange: (e) => r({ area: e ?? "" }),
793
793
  items: [{
794
794
  value: "",
795
- label: o("noArea")
796
- }, ...T.map((e) => ({
795
+ label: a("noArea")
796
+ }, ...x.map((e) => ({
797
797
  value: e.key,
798
798
  label: e.title,
799
- ...e.status === "proposed" && { description: o("proposedArea") }
799
+ ...e.status === "proposed" && { description: a("proposedArea") }
800
800
  }))],
801
801
  trigger: /* @__PURE__ */ J("button", {
802
802
  type: "button",
803
803
  className: i,
804
- children: [/* @__PURE__ */ q(y, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.area ? /* @__PURE__ */ q("span", {
804
+ children: [/* @__PURE__ */ q(b, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.area ? /* @__PURE__ */ q("span", {
805
805
  className: "truncate",
806
806
  children: t.area.title
807
807
  }) : /* @__PURE__ */ q("span", {
808
808
  className: "text-muted-foreground",
809
- children: o("noArea")
809
+ children: a("noArea")
810
810
  })]
811
811
  })
812
812
  })
813
813
  }),
814
814
  t.origin && /* @__PURE__ */ q($, {
815
- label: o("startedFrom"),
815
+ label: a("startedFrom"),
816
816
  children: /* @__PURE__ */ q(Ot, {
817
817
  workspace: e,
818
818
  origin: t.origin,
@@ -820,45 +820,45 @@ function kt({ workspace: e, issue: t, team: n, update: r, row: i }) {
820
820
  })
821
821
  }),
822
822
  /* @__PURE__ */ q($, {
823
- label: o("project"),
823
+ label: a("project"),
824
824
  children: /* @__PURE__ */ q(V, {
825
- "aria-label": o("project"),
825
+ "aria-label": a("project"),
826
826
  value: t.project?.id ?? "",
827
827
  onValueChange: (e) => r({ projectId: e ?? "" }),
828
828
  items: [{
829
829
  value: "",
830
- label: o("noProject")
830
+ label: a("noProject")
831
831
  }, ...d.map((e) => ({
832
832
  value: e.id,
833
833
  label: e.name,
834
- icon: /* @__PURE__ */ q(F, { status: e.status })
834
+ icon: /* @__PURE__ */ q(re, { status: e.status })
835
835
  }))],
836
836
  trigger: /* @__PURE__ */ J("button", {
837
837
  type: "button",
838
838
  className: i,
839
- children: [/* @__PURE__ */ q(O, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.project ? /* @__PURE__ */ q("span", {
839
+ children: [/* @__PURE__ */ q(k, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.project ? /* @__PURE__ */ q("span", {
840
840
  className: "truncate",
841
841
  children: t.project.name
842
842
  }) : /* @__PURE__ */ q("span", {
843
843
  className: "text-muted-foreground",
844
- children: o("noProject")
844
+ children: a("noProject")
845
845
  })]
846
846
  })
847
847
  })
848
848
  }),
849
849
  t.project && /* @__PURE__ */ q($, {
850
- label: o("milestone"),
850
+ label: a("milestone"),
851
851
  children: /* @__PURE__ */ q(V, {
852
- "aria-label": o("milestone"),
852
+ "aria-label": a("milestone"),
853
853
  value: t.milestone?.id ?? "",
854
854
  onValueChange: (e) => r({ milestoneId: e ?? "" }),
855
855
  items: [{
856
856
  value: "",
857
- label: o("noMilestone")
857
+ label: a("noMilestone")
858
858
  }, ...(f?.milestones ?? []).map((e) => ({
859
859
  value: e.id,
860
860
  label: e.name,
861
- ...e.targetDate && { description: l.day(e.targetDate) }
861
+ ...e.targetDate && { description: c.day(e.targetDate) }
862
862
  }))],
863
863
  trigger: /* @__PURE__ */ q("button", {
864
864
  type: "button",
@@ -868,97 +868,97 @@ function kt({ workspace: e, issue: t, team: n, update: r, row: i }) {
868
868
  children: t.milestone.name
869
869
  }) : /* @__PURE__ */ q("span", {
870
870
  className: "text-muted-foreground",
871
- children: o("noMilestone")
871
+ children: a("noMilestone")
872
872
  })
873
873
  })
874
874
  })
875
875
  }),
876
876
  n?.cyclesEnabled && /* @__PURE__ */ q($, {
877
- label: o("cycleLabel"),
877
+ label: a("cycleLabel"),
878
878
  children: /* @__PURE__ */ q(V, {
879
- "aria-label": o("cycleLabel"),
879
+ "aria-label": a("cycleLabel"),
880
880
  value: t.cycle?.id ?? "",
881
881
  onValueChange: (e) => r({ cycleId: e ?? "" }),
882
882
  items: [{
883
883
  value: "",
884
- label: o("noCycle")
884
+ label: a("noCycle")
885
885
  }, ...v.map((e) => ({
886
886
  value: e.id,
887
887
  label: _(e),
888
- description: o("stateAndDates", {
889
- state: o(`states.${e.state}`),
890
- dates: l.dayRange(e.startsOn, e.endsOn)
888
+ description: a("stateAndDates", {
889
+ state: a(`states.${e.state}`),
890
+ dates: c.dayRange(e.startsOn, e.endsOn)
891
891
  })
892
892
  }))],
893
893
  trigger: /* @__PURE__ */ J("button", {
894
894
  type: "button",
895
895
  className: i,
896
- children: [/* @__PURE__ */ q(C, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.cycle ? /* @__PURE__ */ q("span", {
896
+ children: [/* @__PURE__ */ q(w, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.cycle ? /* @__PURE__ */ q("span", {
897
897
  className: "truncate",
898
898
  children: _(t.cycle)
899
899
  }) : /* @__PURE__ */ q("span", {
900
900
  className: "text-muted-foreground",
901
- children: o("noCycle")
901
+ children: a("noCycle")
902
902
  })]
903
903
  })
904
904
  })
905
905
  }),
906
906
  (m !== "none" || !!t.estimate) && /* @__PURE__ */ q($, {
907
- label: o("estimate"),
907
+ label: a("estimate"),
908
908
  children: /* @__PURE__ */ q(V, {
909
- "aria-label": o("estimate"),
909
+ "aria-label": a("estimate"),
910
910
  value: t.estimate ?? 0,
911
911
  onValueChange: (e) => r({ estimate: e ?? 0 }),
912
912
  items: [{
913
913
  value: 0,
914
- label: o("noEstimate")
915
- }, ...te(m).map((e) => ({
914
+ label: a("noEstimate")
915
+ }, ...ae(m).map((e) => ({
916
916
  value: e,
917
917
  label: u(e, m)
918
918
  }))],
919
919
  trigger: /* @__PURE__ */ J("button", {
920
920
  type: "button",
921
921
  className: i,
922
- children: [/* @__PURE__ */ q(w, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.estimate ? u(t.estimate, m) : /* @__PURE__ */ q("span", {
922
+ children: [/* @__PURE__ */ q(T, { className: "size-3.5 shrink-0 text-muted-foreground" }), t.estimate ? u(t.estimate, m) : /* @__PURE__ */ q("span", {
923
923
  className: "text-muted-foreground",
924
- children: o("noEstimate")
924
+ children: a("noEstimate")
925
925
  })]
926
926
  })
927
927
  })
928
928
  }),
929
929
  /* @__PURE__ */ q($, {
930
- label: o("dueDate"),
930
+ label: a("dueDate"),
931
931
  children: /* @__PURE__ */ J("div", {
932
932
  className: "flex items-center",
933
933
  children: [/* @__PURE__ */ q(rt, {
934
934
  value: t.dueDate ?? "",
935
935
  onValueChange: (e) => r({ dueDate: e }),
936
- "aria-label": o("dueDate"),
936
+ "aria-label": a("dueDate"),
937
937
  required: !0,
938
938
  trigger: /* @__PURE__ */ q("button", {
939
939
  type: "button",
940
940
  className: i,
941
- children: t.dueDate ? /* @__PURE__ */ q(P, {
941
+ children: t.dueDate ? /* @__PURE__ */ q(L, {
942
942
  date: t.dueDate,
943
- closed: g
944
- }) : /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q(x, { className: "size-3.5 shrink-0 text-muted-foreground" }), /* @__PURE__ */ q("span", {
943
+ closed: h
944
+ }) : /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q(S, { className: "size-3.5 shrink-0 text-muted-foreground" }), /* @__PURE__ */ q("span", {
945
945
  className: "text-muted-foreground",
946
- children: o("noDueDate")
946
+ children: a("noDueDate")
947
947
  })] })
948
948
  })
949
949
  }), t.dueDate && /* @__PURE__ */ q(at, {
950
950
  variant: "ghost",
951
- icon: /* @__PURE__ */ q(S, { className: "size-3.5" }),
952
- label: o("clearDueDate"),
951
+ icon: /* @__PURE__ */ q(C, { className: "size-3.5" }),
952
+ label: a("clearDueDate"),
953
953
  onClick: () => r({ dueDate: "" })
954
954
  })]
955
955
  })
956
956
  }),
957
- t.slaDueAt && !g && /* @__PURE__ */ q($, {
958
- label: o("sla.label"),
957
+ t.slaDueAt && !h && /* @__PURE__ */ q($, {
958
+ label: a("sla.label"),
959
959
  children: /* @__PURE__ */ q("span", {
960
960
  className: "flex h-7 items-center px-2",
961
- children: /* @__PURE__ */ q(I, {
961
+ children: /* @__PURE__ */ q(ie, {
962
962
  issue: t,
963
963
  team: n
964
964
  })
@@ -977,7 +977,7 @@ function $({ label: e, shortcut: t, children: n }) {
977
977
  }), n] });
978
978
  }
979
979
  function At({ workspace: e, identifier: t }) {
980
- let n = G("issue.activity"), { data: r } = Q(l(e, t)), [i, a] = W(!1), o = _t(() => {
980
+ let n = G("issue.activity"), { data: r } = Q(u(e, t)), [i, a] = W(!1), o = _t(() => {
981
981
  let e = [];
982
982
  for (let t of r) {
983
983
  if (t.type.startsWith("comment.") || t.type.startsWith("issue.reaction_")) continue;
@@ -1011,13 +1011,13 @@ function At({ workspace: e, identifier: t }) {
1011
1011
  });
1012
1012
  }
1013
1013
  function jt({ workspace: e, identifier: t, others: n }) {
1014
- let r = G("issue.comments"), { data: i } = Q(s(e, t)), { data: a = [] } = X(d(e, t)), o = _t(() => {
1014
+ let r = G("issue.comments"), { data: i } = Q(c(e, t)), { data: a = [] } = X(f(e, t)), o = _t(() => {
1015
1015
  let e = i.filter((e) => !e.parentId);
1016
1016
  return e.sort((e, t) => Number(Mt(t)) - Number(Mt(e))), e.map((e) => ({
1017
1017
  root: e,
1018
1018
  replies: i.filter((t) => t.parentId === e.id)
1019
1019
  }));
1020
- }, [i]), [c, l] = W(null), u = i.filter((e) => !e.deletedAt && !Mt(e)).length;
1020
+ }, [i]), [s, l] = W(null), u = i.filter((e) => !e.deletedAt && !Mt(e)).length;
1021
1021
  return /* @__PURE__ */ J("section", {
1022
1022
  className: "mt-12 border-t border-border pt-6",
1023
1023
  "aria-label": r("title"),
@@ -1036,18 +1036,18 @@ function jt({ workspace: e, identifier: t, others: n }) {
1036
1036
  /* @__PURE__ */ q("div", {
1037
1037
  className: "mt-4 space-y-3",
1038
1038
  children: o.map(({ root: n, replies: i }) => {
1039
- let o = Mt(n) ? n.sharedWith : void 0, s = o ? oe(o).source : void 0;
1039
+ let o = Mt(n) ? n.sharedWith : void 0, c = o ? se(o).source : void 0;
1040
1040
  return /* @__PURE__ */ J(tt, {
1041
1041
  size: "fill",
1042
1042
  padding: "none",
1043
1043
  highlight: !!o,
1044
1044
  render: /* @__PURE__ */ q("article", {
1045
1045
  id: `comment-${n.id}`,
1046
- "aria-label": s && r("sharedThreadLabel", { source: s })
1046
+ "aria-label": c && r("sharedThreadLabel", { source: c })
1047
1047
  }),
1048
1048
  children: [
1049
- o && s ? /* @__PURE__ */ q(We, {
1050
- source: s,
1049
+ o && c ? /* @__PURE__ */ q(We, {
1050
+ source: c,
1051
1051
  link: a.find((e) => e.connector === o)
1052
1052
  }) : /* @__PURE__ */ q(Pt, {
1053
1053
  workspace: e,
@@ -1070,18 +1070,18 @@ function jt({ workspace: e, identifier: t, others: n }) {
1070
1070
  }),
1071
1071
  /* @__PURE__ */ q("div", {
1072
1072
  className: "border-t border-border/70 px-3 py-2",
1073
- children: c === n.id ? /* @__PURE__ */ q(It, {
1073
+ children: s === n.id ? /* @__PURE__ */ q(It, {
1074
1074
  workspace: e,
1075
1075
  identifier: t,
1076
1076
  parentId: n.id,
1077
- publicOn: s,
1077
+ publicOn: c,
1078
1078
  autofocus: !0,
1079
1079
  onDone: () => l(null)
1080
1080
  }) : /* @__PURE__ */ q("button", {
1081
1081
  type: "button",
1082
1082
  onClick: () => l(n.id),
1083
1083
  className: "w-full text-left text-xs text-muted-foreground hover:text-foreground",
1084
- children: s ? r("replyPublic", { source: s }) : r("replyPlaceholder")
1084
+ children: c ? r("replyPublic", { source: c }) : r("replyPlaceholder")
1085
1085
  })
1086
1086
  })
1087
1087
  ]
@@ -1114,15 +1114,15 @@ function Nt({ comment: e }) {
1114
1114
  let t = G("issue.comments");
1115
1115
  return e.author.kind === "connector" ? /* @__PURE__ */ q("span", {
1116
1116
  className: "rounded border border-border px-1.5 py-px text-[10px] text-muted-foreground",
1117
- children: t("via", { source: oe(e.author.handle).source })
1117
+ children: t("via", { source: se(e.author.handle).source })
1118
1118
  }) : null;
1119
1119
  }
1120
1120
  function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1121
- let o = G("issue.comments"), s = G("common"), { actorName: c, avatarOf: l } = se(n), { data: u } = Q(m), { data: d = [] } = X(g(n, r)), f = ve(n, "comment", { team: r.slice(0, r.lastIndexOf("-")) }), p = Z(), h = H(), [_, v] = W(!1), [y, b] = W(i.body), [x, S] = W(!1), C = U(null), w = Ee(n, r), T = i.author.kind === "user" && i.author.handle === u?.user.username, E = { path: {
1121
+ let o = G("issue.comments"), s = G("common"), { actorName: c, avatarOf: l } = ce(n), { data: u } = Q(h), { data: d = [] } = X(_(n, r)), f = ve(n, "comment", { team: r.slice(0, r.lastIndexOf("-")) }), p = Z(), m = H(), [g, v] = W(!1), [y, b] = W(i.body), [x, S] = W(!1), C = U(null), w = Ee(n, r), T = i.author.kind === "user" && i.author.handle === u?.user.username, E = { path: {
1122
1122
  workspace: n,
1123
1123
  identifier: r,
1124
1124
  commentId: i.id
1125
- } }, D = () => L(p, n, r), O = Y({
1125
+ } }, D = () => I(p, n, r), O = Y({
1126
1126
  mutationFn: async () => t(await e.PATCH("/api/v1/workspaces/{workspace}/issues/{identifier}/comments/{commentId}", {
1127
1127
  params: E,
1128
1128
  body: { body: y }
@@ -1138,13 +1138,13 @@ function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1138
1138
  className: "px-3 py-2.5 text-xs text-muted-foreground italic",
1139
1139
  children: o("deleted")
1140
1140
  });
1141
- let A = `${pe(n, r)}#comment-${i.id}`, j = [
1141
+ let ee = `${me(n, r)}#comment-${i.id}`, A = [
1142
1142
  {
1143
1143
  label: o("reply"),
1144
1144
  onClick: a
1145
1145
  },
1146
- M(s("copyLink"), A),
1147
- M(o("copyText"), i.body),
1146
+ N(s("copyLink"), ee),
1147
+ N(o("copyText"), i.body),
1148
1148
  ...T ? [
1149
1149
  dt,
1150
1150
  {
@@ -1162,7 +1162,7 @@ function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1162
1162
  ];
1163
1163
  return /* @__PURE__ */ J("div", {
1164
1164
  className: "group px-3 py-2.5",
1165
- onContextMenu: (e) => !_ && h(e, j),
1165
+ onContextMenu: (e) => !g && m(e, A),
1166
1166
  children: [/* @__PURE__ */ J("div", {
1167
1167
  className: "flex items-center gap-2 text-xs",
1168
1168
  children: [
@@ -1190,8 +1190,8 @@ function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1190
1190
  exact: "medium"
1191
1191
  }), i.updatedAt !== i.createdAt && /* @__PURE__ */ J(K, { children: [" ", o("edited")] })]
1192
1192
  }),
1193
- !x && !_ && /* @__PURE__ */ q(bt, {
1194
- items: j,
1193
+ !x && !g && /* @__PURE__ */ q(bt, {
1194
+ items: A,
1195
1195
  className: "ml-auto"
1196
1196
  }),
1197
1197
  x && /* @__PURE__ */ J("span", {
@@ -1215,7 +1215,7 @@ function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1215
1215
  ]
1216
1216
  }), /* @__PURE__ */ q("div", {
1217
1217
  className: "mt-1",
1218
- children: _ ? /* @__PURE__ */ J(K, { children: [
1218
+ children: g ? /* @__PURE__ */ J(K, { children: [
1219
1219
  /* @__PURE__ */ q(R, {
1220
1220
  value: y,
1221
1221
  onChange: b,
@@ -1275,7 +1275,7 @@ function Pt({ workspace: n, identifier: r, comment: i, onReply: a }) {
1275
1275
  });
1276
1276
  }
1277
1277
  function Ft({ workspace: e, identifier: t, comment: n }) {
1278
- let { data: r = [] } = X(o(e, t)), { actorName: i } = se(e), a = r.filter((e) => e.page && e.commentId === n.id);
1278
+ let { data: r = [] } = X(s(e, t)), { actorName: i } = ce(e), a = r.filter((e) => e.page && e.commentId === n.id);
1279
1279
  return a.length === 0 ? null : /* @__PURE__ */ q("div", {
1280
1280
  className: "mt-2 space-y-2",
1281
1281
  children: a.map((e) => /* @__PURE__ */ q(Me, {
@@ -1298,7 +1298,7 @@ function It({ workspace: n, identifier: r, parentId: i, publicOn: a, autofocus:
1298
1298
  }
1299
1299
  })),
1300
1300
  onSuccess: () => {
1301
- m(""), g((e) => e + 1), L(f, n, r), s?.();
1301
+ m(""), g((e) => e + 1), I(f, n, r), s?.();
1302
1302
  }
1303
1303
  }), b = () => p.trim() && !y.isPending && v.pending === 0 && y.mutate();
1304
1304
  return /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q(R, {