@parallelworks/tandem-web 0.142.0 → 0.143.0
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.
- package/_virtual/_virtual_i18n/en/common.js +105 -6
- package/_virtual/_virtual_i18n/es/common.js +105 -6
- package/_virtual/_virtual_i18n/ja/common.js +105 -6
- package/_virtual/_virtual_i18n/ko/common.js +105 -6
- package/_virtual/_virtual_i18n/zh/common.js +105 -6
- package/components/AccessGrants.js +6 -6
- package/components/ActivityTimeline.js +2 -0
- package/components/CodeHostSettings.js +25 -25
- package/components/CustomFields.js +349 -0
- package/components/DocProperties.js +8 -2
- package/components/GitHub.js +22 -22
- package/components/IssueBoard.js +48 -43
- package/components/IssueEvent.js +2 -0
- package/components/IssueFilters.js +210 -122
- package/components/IssueImport.js +1 -1
- package/components/IssueRow.js +96 -79
- package/components/IssueTemplates.js +216 -156
- package/components/IssueTypes.js +318 -0
- package/components/NewIssueDialog.js +254 -216
- package/components/SettingsNav.js +40 -35
- package/components/TeamForm.js +49 -35
- package/components/TeamRepositories.js +51 -51
- package/components/TeamWorkflow.js +8 -8
- package/components/Updates.js +8 -8
- package/lib/boardMove.js +69 -47
- package/lib/customFields.js +113 -0
- package/lib/issueDisplay.js +27 -12
- package/lib/issueList.js +166 -62
- package/lib/issueTypes.js +50 -0
- package/lib/teamTree.js +24 -0
- package/lib/views.js +13 -11
- package/package.json +1 -1
- package/pages/issues.js +331 -291
- package/routeTree.gen.js +151 -145
- package/routes/_workspace/agents/index2.js +9 -9
- package/routes/_workspace/issues/_identifier2.js +433 -370
- package/routes/_workspace/projects/_projectId3.js +213 -201
- package/routes/_workspace/settings/audit-log3.js +2 -0
- package/routes/_workspace/settings/fields.js +6 -0
- package/routes/_workspace/settings/fields2.js +30 -0
- package/routes/_workspace/settings/fields3.js +5 -0
- package/routes/_workspace/settings/groups2.js +74 -74
- package/routes/_workspace/settings/labels2.js +33 -33
- package/routes/_workspace/settings/members2.js +35 -35
- package/routes/_workspace/settings/roles2.js +24 -24
- package/routes/_workspace/settings/runners2.js +18 -18
- package/routes/_workspace/settings/sessions2.js +9 -9
- package/routes/_workspace/settings/slack2.js +8 -8
- package/routes/_workspace/settings/sso2.js +50 -50
- package/routes/_workspace/settings/tokens2.js +15 -15
- package/routes/_workspace/settings/webhooks2.js +42 -42
- package/routes/_workspace/teams/_key/settings2.js +138 -76
- package/routes/_workspace2.js +320 -318
package/components/IssueRow.js
CHANGED
|
@@ -1,135 +1,152 @@
|
|
|
1
1
|
import { Link as e } from "../lib/router.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
2
|
+
import { hasValue as t } from "../lib/customFields.js";
|
|
3
|
+
import { PriorityIcon as n, ProjectIcon as r, StatusIcon as i, UsersIcon as a } from "./icons.js";
|
|
4
|
+
import { TypeIcon as o } from "./IssueTypes.js";
|
|
5
|
+
import { useTime as s } from "../lib/time.js";
|
|
6
|
+
import { DueDate as c, SlaBadge as l, estimateShort as u } from "./Planning.js";
|
|
7
|
+
import { usePeople as d } from "../lib/people.js";
|
|
8
|
+
import { PersonHoverCard as f } from "./PersonHoverCard.js";
|
|
9
|
+
import { useFieldText as p } from "./CustomFields.js";
|
|
10
|
+
import { actorAvatar as m } from "../lib/avatar.js";
|
|
11
|
+
import { Avatar as h, AvatarGroup as g, Checkbox as _, Tooltip as v, useRelativeTime as y } from "@parallelworks/ui";
|
|
12
|
+
import { useFormatter as b, useTranslations as x } from "use-intl";
|
|
13
|
+
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
11
14
|
// src/components/IssueRow.tsx
|
|
12
|
-
function
|
|
13
|
-
let
|
|
14
|
-
return /* @__PURE__ */
|
|
15
|
-
id: `row-${
|
|
16
|
-
onMouseEnter:
|
|
17
|
-
className: `group/row relative flex items-center border-b border-border/60 ${
|
|
15
|
+
function w({ issue: w, team: T, workspace: E, selected: D = !1, picked: O = !1, viewers: k = [], onPick: A, onHover: j, onClick: M, onContextMenu: N, fields: P = [] }) {
|
|
16
|
+
let F = x("issues"), I = b(), L = s(), R = y(w.updatedAt, "compact"), { person: z, nameOf: B, avatarOf: V } = d(E), H = p(E);
|
|
17
|
+
return /* @__PURE__ */ C("li", {
|
|
18
|
+
id: `row-${w.id}`,
|
|
19
|
+
onMouseEnter: j,
|
|
20
|
+
className: `group/row relative flex items-center border-b border-border/60 ${O ? "bg-human-soft" : D ? "bg-muted/70" : ""}`,
|
|
18
21
|
children: [
|
|
19
|
-
|
|
22
|
+
O && /* @__PURE__ */ S("span", {
|
|
20
23
|
className: "absolute inset-y-0 left-0 w-0.5 bg-human",
|
|
21
24
|
"aria-hidden": "true"
|
|
22
25
|
}),
|
|
23
|
-
|
|
24
|
-
className: `flex shrink-0 pl-4 transition-opacity duration-150 md:pl-5 ${
|
|
25
|
-
children: /* @__PURE__ */
|
|
26
|
-
content:
|
|
26
|
+
A && /* @__PURE__ */ S("span", {
|
|
27
|
+
className: `flex shrink-0 pl-4 transition-opacity duration-150 md:pl-5 ${O ? "" : "opacity-0 group-hover/row:opacity-100 has-[:focus-visible]:opacity-100 max-md:opacity-100"}`,
|
|
28
|
+
children: /* @__PURE__ */ S(v, {
|
|
29
|
+
content: F("selectIssue"),
|
|
27
30
|
shortcut: "X",
|
|
28
|
-
children: /* @__PURE__ */
|
|
29
|
-
"aria-label":
|
|
30
|
-
checked:
|
|
31
|
+
children: /* @__PURE__ */ S(_, {
|
|
32
|
+
"aria-label": F("select", { identifier: w.identifier }),
|
|
33
|
+
checked: O,
|
|
31
34
|
onClick: (e) => {
|
|
32
|
-
e.preventDefault(),
|
|
35
|
+
e.preventDefault(), A(e.shiftKey);
|
|
33
36
|
}
|
|
34
37
|
})
|
|
35
38
|
})
|
|
36
39
|
}),
|
|
37
|
-
/* @__PURE__ */
|
|
40
|
+
/* @__PURE__ */ C(e, {
|
|
38
41
|
to: "/$workspace/issues/$identifier",
|
|
39
42
|
params: {
|
|
40
|
-
workspace:
|
|
41
|
-
identifier:
|
|
43
|
+
workspace: E,
|
|
44
|
+
identifier: w.identifier
|
|
42
45
|
},
|
|
43
|
-
onClick:
|
|
44
|
-
onContextMenu:
|
|
45
|
-
className: `flex h-10 min-w-0 flex-1 items-center gap-3 pr-5 text-sm ${
|
|
46
|
+
onClick: M,
|
|
47
|
+
onContextMenu: N,
|
|
48
|
+
className: `flex h-10 min-w-0 flex-1 items-center gap-3 pr-5 text-sm ${A ? "pl-3" : "pl-5"}`,
|
|
46
49
|
children: [
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
className:
|
|
50
|
-
children:
|
|
50
|
+
/* @__PURE__ */ S(n, { priority: w.priority }),
|
|
51
|
+
/* @__PURE__ */ C("span", {
|
|
52
|
+
className: `flex shrink-0 items-center gap-1 text-xs text-muted-foreground ${w.type ? "w-20" : "w-16"}`,
|
|
53
|
+
children: [w.type && /* @__PURE__ */ S(v, {
|
|
54
|
+
content: w.type.name,
|
|
55
|
+
describesAnchor: !0,
|
|
56
|
+
children: /* @__PURE__ */ S(o, {
|
|
57
|
+
type: w.type,
|
|
58
|
+
className: "size-3.5"
|
|
59
|
+
})
|
|
60
|
+
}), w.identifier]
|
|
51
61
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
/* @__PURE__ */
|
|
62
|
+
/* @__PURE__ */ S(i, { category: w.status.category }),
|
|
63
|
+
/* @__PURE__ */ S("span", {
|
|
54
64
|
className: "min-w-0 flex-1 truncate",
|
|
55
|
-
children:
|
|
65
|
+
children: w.title
|
|
56
66
|
}),
|
|
57
|
-
!!
|
|
58
|
-
content:
|
|
59
|
-
children: /* @__PURE__ */
|
|
67
|
+
!!w.requests && /* @__PURE__ */ S(v, {
|
|
68
|
+
content: F("requestCount", { count: w.requests }),
|
|
69
|
+
children: /* @__PURE__ */ C("span", {
|
|
60
70
|
className: "inline-flex shrink-0 items-center gap-1 text-xs text-muted-foreground tabular-nums",
|
|
61
|
-
children: [/* @__PURE__ */
|
|
71
|
+
children: [/* @__PURE__ */ S(a, { className: "size-3" }), w.requests]
|
|
62
72
|
})
|
|
63
73
|
}),
|
|
64
|
-
|
|
74
|
+
w.project && /* @__PURE__ */ C("span", {
|
|
65
75
|
className: "hidden max-w-40 shrink-0 items-center gap-1 truncate text-xs text-muted-foreground lg:inline-flex",
|
|
66
|
-
children: [/* @__PURE__ */
|
|
76
|
+
children: [/* @__PURE__ */ S(r, { className: "size-3 shrink-0" }), /* @__PURE__ */ S("span", {
|
|
67
77
|
className: "truncate",
|
|
68
|
-
children:
|
|
78
|
+
children: w.project.name
|
|
69
79
|
})]
|
|
70
80
|
}),
|
|
71
|
-
|
|
72
|
-
date:
|
|
73
|
-
closed:
|
|
81
|
+
w.dueDate && /* @__PURE__ */ S(c, {
|
|
82
|
+
date: w.dueDate,
|
|
83
|
+
closed: w.status.category === "completed" || w.status.category === "canceled"
|
|
74
84
|
}),
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
issue:
|
|
77
|
-
team:
|
|
85
|
+
/* @__PURE__ */ S(l, {
|
|
86
|
+
issue: w,
|
|
87
|
+
team: T
|
|
78
88
|
}),
|
|
79
|
-
!!
|
|
80
|
-
content:
|
|
89
|
+
!!w.estimate && /* @__PURE__ */ S(v, {
|
|
90
|
+
content: F("estimate", { points: w.estimate }),
|
|
81
91
|
describesAnchor: !0,
|
|
82
|
-
children: /* @__PURE__ */
|
|
92
|
+
children: /* @__PURE__ */ S("span", {
|
|
83
93
|
className: "hidden h-5 min-w-5 shrink-0 items-center justify-center rounded border border-border px-1 text-[11px] text-muted-foreground tabular-nums sm:inline-flex",
|
|
84
|
-
children:
|
|
94
|
+
children: u(w.estimate, T?.estimateScale)
|
|
85
95
|
})
|
|
86
96
|
}),
|
|
87
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ C("span", {
|
|
88
98
|
className: "hidden shrink-0 gap-1 md:flex",
|
|
89
|
-
children:
|
|
99
|
+
children: [P.filter((e) => t(w.fields[e.id])).map((e) => /* @__PURE__ */ S(v, {
|
|
100
|
+
content: e.name,
|
|
101
|
+
describesAnchor: !0,
|
|
102
|
+
children: /* @__PURE__ */ S("span", {
|
|
103
|
+
className: "inline-flex max-w-40 items-center truncate rounded-full border border-border px-2 py-0.5 text-[11px] text-muted-foreground",
|
|
104
|
+
children: H(e, w.fields[e.id])
|
|
105
|
+
})
|
|
106
|
+
}, e.id)), w.labels.map((e) => /* @__PURE__ */ C("span", {
|
|
90
107
|
className: "inline-flex items-center gap-1 rounded-full border border-border px-2 py-0.5 text-[11px]",
|
|
91
|
-
children: [/* @__PURE__ */
|
|
108
|
+
children: [/* @__PURE__ */ S("span", {
|
|
92
109
|
className: "size-2 rounded-full",
|
|
93
110
|
style: { background: e.color }
|
|
94
111
|
}), e.name]
|
|
95
|
-
}, e.id))
|
|
112
|
+
}, e.id))]
|
|
96
113
|
}),
|
|
97
|
-
|
|
98
|
-
content:
|
|
99
|
-
children: /* @__PURE__ */
|
|
114
|
+
k.length > 0 && /* @__PURE__ */ S(v, {
|
|
115
|
+
content: F("viewing", { names: I.list(k.map((e) => z(e).name)) }),
|
|
116
|
+
children: /* @__PURE__ */ S(g, {
|
|
100
117
|
size: "xs",
|
|
101
118
|
ringColor: "var(--avatar-person-text)",
|
|
102
119
|
className: "shrink-0",
|
|
103
|
-
children:
|
|
104
|
-
workspace:
|
|
120
|
+
children: k.map((e) => /* @__PURE__ */ S(f, {
|
|
121
|
+
workspace: E,
|
|
105
122
|
handle: e,
|
|
106
|
-
children: /* @__PURE__ */
|
|
107
|
-
name:
|
|
108
|
-
src:
|
|
123
|
+
children: /* @__PURE__ */ S(h, {
|
|
124
|
+
name: z(e).name,
|
|
125
|
+
src: z(e).avatarUrl
|
|
109
126
|
})
|
|
110
127
|
}, e))
|
|
111
128
|
})
|
|
112
129
|
}),
|
|
113
|
-
/* @__PURE__ */
|
|
130
|
+
/* @__PURE__ */ S(g, {
|
|
114
131
|
size: "sm",
|
|
115
|
-
children:
|
|
116
|
-
workspace:
|
|
132
|
+
children: w.assignees.map((e) => /* @__PURE__ */ S(f, {
|
|
133
|
+
workspace: E,
|
|
117
134
|
kind: e.kind,
|
|
118
135
|
handle: e.handle,
|
|
119
|
-
children: /* @__PURE__ */
|
|
120
|
-
...
|
|
121
|
-
name:
|
|
122
|
-
src:
|
|
136
|
+
children: /* @__PURE__ */ S(h, {
|
|
137
|
+
...m(e.kind),
|
|
138
|
+
name: B(e.kind, e.handle),
|
|
139
|
+
src: V(e.kind, e.handle),
|
|
123
140
|
tooltip: e.kind !== "user"
|
|
124
141
|
})
|
|
125
142
|
}, `${e.kind}:${e.handle}`))
|
|
126
143
|
}),
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
-
content:
|
|
129
|
-
children: /* @__PURE__ */
|
|
130
|
-
dateTime:
|
|
144
|
+
/* @__PURE__ */ S(v, {
|
|
145
|
+
content: F("updated", { time: L.full(w.updatedAt) }),
|
|
146
|
+
children: /* @__PURE__ */ S("time", {
|
|
147
|
+
dateTime: w.updatedAt,
|
|
131
148
|
className: "min-w-10 shrink-0 whitespace-nowrap text-right text-xs text-muted-foreground",
|
|
132
|
-
children:
|
|
149
|
+
children: R
|
|
133
150
|
})
|
|
134
151
|
})
|
|
135
152
|
]
|
|
@@ -137,4 +154,4 @@ function x({ issue: x, team: S, workspace: C, selected: w = !1, picked: T = !1,
|
|
|
137
154
|
]
|
|
138
155
|
});
|
|
139
156
|
}
|
|
140
|
-
export {
|
|
157
|
+
export { w as IssueRow };
|