@parallelworks/tandem-web 0.142.0 → 0.144.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.
Files changed (58) hide show
  1. package/_virtual/_virtual_i18n/en/common.js +156 -6
  2. package/_virtual/_virtual_i18n/es/common.js +156 -6
  3. package/_virtual/_virtual_i18n/ja/common.js +156 -6
  4. package/_virtual/_virtual_i18n/ko/common.js +156 -6
  5. package/_virtual/_virtual_i18n/zh/common.js +156 -6
  6. package/api/queries.js +85 -74
  7. package/components/AccessGrants.js +6 -6
  8. package/components/ActivityTimeline.js +2 -0
  9. package/components/CodeHostSettings.js +25 -25
  10. package/components/CustomFields.js +349 -0
  11. package/components/DocProperties.js +8 -2
  12. package/components/GitHub.js +22 -22
  13. package/components/IssueBoard.js +48 -43
  14. package/components/IssueEvent.js +2 -0
  15. package/components/IssueFilters.js +210 -122
  16. package/components/IssueImport.js +1 -1
  17. package/components/IssueRow.js +96 -79
  18. package/components/IssueTemplates.js +216 -156
  19. package/components/IssueTypes.js +318 -0
  20. package/components/NewIssueDialog.js +254 -216
  21. package/components/SettingsNav.js +45 -35
  22. package/components/TeamForm.js +49 -35
  23. package/components/TeamRepositories.js +51 -51
  24. package/components/TeamWorkflow.js +8 -8
  25. package/components/Updates.js +8 -8
  26. package/components/icons.js +8 -8
  27. package/lib/boardMove.js +69 -47
  28. package/lib/customFields.js +113 -0
  29. package/lib/issueDisplay.js +27 -12
  30. package/lib/issueList.js +166 -62
  31. package/lib/issueTypes.js +50 -0
  32. package/lib/teamTree.js +24 -0
  33. package/lib/views.js +13 -11
  34. package/package.json +1 -1
  35. package/pages/issues.js +331 -291
  36. package/routeTree.gen.js +186 -174
  37. package/routes/_workspace/agents/index2.js +9 -9
  38. package/routes/_workspace/issues/_identifier2.js +433 -370
  39. package/routes/_workspace/projects/_projectId3.js +213 -201
  40. package/routes/_workspace/settings/audit-log3.js +2 -0
  41. package/routes/_workspace/settings/fields.js +6 -0
  42. package/routes/_workspace/settings/fields2.js +30 -0
  43. package/routes/_workspace/settings/fields3.js +5 -0
  44. package/routes/_workspace/settings/groups2.js +74 -74
  45. package/routes/_workspace/settings/import.js +6 -0
  46. package/routes/_workspace/settings/import2.js +330 -0
  47. package/routes/_workspace/settings/import3.js +4 -0
  48. package/routes/_workspace/settings/labels2.js +33 -33
  49. package/routes/_workspace/settings/members2.js +35 -35
  50. package/routes/_workspace/settings/roles2.js +24 -24
  51. package/routes/_workspace/settings/runners2.js +18 -18
  52. package/routes/_workspace/settings/sessions2.js +9 -9
  53. package/routes/_workspace/settings/slack2.js +8 -8
  54. package/routes/_workspace/settings/sso2.js +50 -50
  55. package/routes/_workspace/settings/tokens2.js +15 -15
  56. package/routes/_workspace/settings/webhooks2.js +42 -42
  57. package/routes/_workspace/teams/_key/settings2.js +138 -76
  58. package/routes/_workspace2.js +320 -318
@@ -1,239 +1,299 @@
1
1
  import { api as e, unwrap as t } from "../api/client.js";
2
- import { issueTemplatesQuery as n, labelsQuery as r } from "../api/queries.js";
3
- import { AddIcon as i, PriorityIcon as a, usePriorityNames as o } from "./icons.js";
4
- import { useConfirm as s } from "../lib/confirm.js";
5
- import { Editor as c } from "./Editor.js";
6
- import { Button as l, Combobox as u, DatePicker as d, Input as f, Modal as p, Select as m, SettingsCard as h, menuDivider as g } from "@parallelworks/ui";
7
- import { useId as _, useState as v } from "react";
8
- import { useErrorMessage as y } from "@parallelworks/problem/react";
9
- import { useFormatter as b, useTranslations as x } from "use-intl";
10
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
11
- import { useMutation as T, useQuery as E, useQueryClient as D } from "@tanstack/react-query";
12
- import { MoreButton as O } from "@parallelworks/ui/list";
2
+ import { issueTemplatesQuery as n, labelsQuery as r, teamsQuery as i } from "../api/queries.js";
3
+ import { useConfirm as a } from "../lib/confirm.js";
4
+ import { customFieldsQuery as o, fieldsFor as s } from "../lib/customFields.js";
5
+ import { issueTypesQuery as c, typesFor as l } from "../lib/issueTypes.js";
6
+ import { AddIcon as u, PriorityIcon as d, usePriorityNames as f } from "./icons.js";
7
+ import { TypeIcon as p } from "./IssueTypes.js";
8
+ import { PropertyField as m } from "./DocProperties.js";
9
+ import { Editor as h } from "./Editor.js";
10
+ import { Button as g, Combobox as _, DatePicker as v, Input as y, Modal as ee, Select as b, SettingsCard as x, menuDivider as S } from "@parallelworks/ui";
11
+ import { useId as C, useState as w } from "react";
12
+ import { useErrorMessage as T } from "@parallelworks/problem/react";
13
+ import { useFormatter as E, useTranslations as D } from "use-intl";
14
+ import { Fragment as te, jsx as O, jsxs as k } from "react/jsx-runtime";
15
+ import { useMutation as A, useQuery as j, useQueryClient as M } from "@tanstack/react-query";
16
+ import { MoreButton as N } from "@parallelworks/ui/list";
13
17
  // src/components/IssueTemplates.tsx
14
- function k({ workspace: r, teamKey: a, isAdmin: o }) {
15
- let c = x("issueTemplates"), u = b(), d = x("common"), f = D(), { data: p = [] } = E(n(r, a)), [m, _] = v(null), { confirm: y, dialog: S } = s(), k = T({
18
+ function P({ workspace: r, teamKey: i, isAdmin: o }) {
19
+ let s = D("issueTemplates"), c = E(), l = D("common"), d = M(), { data: f = [] } = j(n(r, i)), [p, m] = w(null), { confirm: h, dialog: _ } = a(), v = A({
16
20
  mutationFn: async (n) => t(await e.DELETE("/api/v1/workspaces/{workspace}/teams/{key}/issue-templates/{templateId}", { params: { path: {
17
21
  workspace: r,
18
- key: a,
22
+ key: i,
19
23
  templateId: n
20
24
  } } })),
21
- onSettled: () => f.invalidateQueries({ queryKey: n(r, a).queryKey })
25
+ onSettled: () => d.invalidateQueries({ queryKey: n(r, i).queryKey })
22
26
  });
23
- return /* @__PURE__ */ w(h, {
24
- title: c("title"),
25
- description: c("description"),
26
- action: o && /* @__PURE__ */ C(l, {
27
+ return /* @__PURE__ */ k(x, {
28
+ title: s("title"),
29
+ description: s("description"),
30
+ action: o && /* @__PURE__ */ O(g, {
27
31
  variant: "outline",
28
32
  size: "sm",
29
- icon: /* @__PURE__ */ C(i, { className: "size-3.5" }),
30
- onClick: () => _("new"),
31
- children: c("new")
33
+ icon: /* @__PURE__ */ O(u, { className: "size-3.5" }),
34
+ onClick: () => m("new"),
35
+ children: s("new")
32
36
  }),
33
37
  children: [
34
- p.length === 0 ? /* @__PURE__ */ C("p", {
38
+ f.length === 0 ? /* @__PURE__ */ O("p", {
35
39
  className: "px-4 py-3 text-sm text-muted-foreground",
36
- children: c("none")
37
- }) : /* @__PURE__ */ C("ul", { children: p.map((e) => /* @__PURE__ */ w("li", {
40
+ children: s("none")
41
+ }) : /* @__PURE__ */ O("ul", { children: f.map((e) => /* @__PURE__ */ k("li", {
38
42
  className: "flex items-center gap-3 border-b border-border/60 px-4 py-2.5 last:border-b-0",
39
- children: [/* @__PURE__ */ w("span", {
43
+ children: [/* @__PURE__ */ k("span", {
40
44
  className: "min-w-0 flex-1",
41
45
  children: [
42
- /* @__PURE__ */ C("span", {
46
+ /* @__PURE__ */ O("span", {
43
47
  className: "block truncate text-sm font-medium",
44
48
  children: e.name
45
49
  }),
46
- e.title && /* @__PURE__ */ C("span", {
50
+ e.title && /* @__PURE__ */ O("span", {
47
51
  className: "block truncate text-xs text-muted-foreground",
48
52
  children: e.title
49
53
  }),
50
- e.repeat && e.nextAt && /* @__PURE__ */ C("span", {
54
+ e.repeat && e.nextAt && /* @__PURE__ */ O("span", {
51
55
  className: "block truncate text-xs text-muted-foreground",
52
- children: c("schedule", {
53
- repeat: c(`repeats.${e.repeat}`),
54
- next: u.dateTime(new Date(e.nextAt), { dateStyle: "medium" })
56
+ children: s("schedule", {
57
+ repeat: s(`repeats.${e.repeat}`),
58
+ next: c.dateTime(new Date(e.nextAt), { dateStyle: "medium" })
55
59
  })
56
60
  })
57
61
  ]
58
- }), o && /* @__PURE__ */ C(O, {
59
- label: d("moreActionsFor", { name: e.name }),
62
+ }), o && /* @__PURE__ */ O(N, {
63
+ label: l("moreActionsFor", { name: e.name }),
60
64
  items: () => [
61
65
  {
62
- label: c("edit"),
63
- onClick: () => _(e)
66
+ label: s("edit"),
67
+ onClick: () => m(e)
64
68
  },
65
- g,
69
+ S,
66
70
  {
67
- label: d("delete"),
71
+ label: l("delete"),
68
72
  destructive: !0,
69
- onClick: () => y({
70
- title: c("deleteTitle", { name: e.name }),
71
- description: c("deleteDescription"),
72
- confirmLabel: d("delete"),
73
- onConfirm: () => k.mutateAsync(e.id)
73
+ onClick: () => h({
74
+ title: s("deleteTitle", { name: e.name }),
75
+ description: s("deleteDescription"),
76
+ confirmLabel: l("delete"),
77
+ onConfirm: () => v.mutateAsync(e.id)
74
78
  })
75
79
  }
76
80
  ]
77
81
  })]
78
82
  }, e.id)) }),
79
- m && /* @__PURE__ */ C(A, {
83
+ p && /* @__PURE__ */ O(F, {
80
84
  workspace: r,
81
- teamKey: a,
82
- template: m === "new" ? void 0 : m,
83
- onClose: () => _(null)
85
+ teamKey: i,
86
+ template: p === "new" ? void 0 : p,
87
+ onClose: () => m(null)
84
88
  }),
85
- S
89
+ _
86
90
  ]
87
91
  });
88
92
  }
89
- function A({ workspace: i, teamKey: s, template: h, onClose: g }) {
90
- let O = x("issueTemplates"), k = b(), A = x("common"), P = y(), F = o(), I = D(), { data: L = [] } = E(r(i)), [R, z] = v({
91
- name: h?.name ?? "",
92
- title: h?.title ?? "",
93
- body: h?.body ?? "",
94
- priority: h?.priority ?? 0,
95
- labelIds: h?.labelIds ?? [],
96
- ...h?.repeat && {
97
- repeat: h.repeat,
98
- nextAt: h.nextAt,
99
- timeZone: h.timeZone
93
+ function F({ workspace: a, teamKey: u, template: x, onClose: S }) {
94
+ let N = D("issueTemplates"), P = E(), F = D("common"), z = T(), B = f(), V = M(), { data: H = [] } = j(r(a)), [U, W] = w({
95
+ name: x?.name ?? "",
96
+ title: x?.title ?? "",
97
+ body: x?.body ?? "",
98
+ priority: x?.priority ?? 0,
99
+ labelIds: x?.labelIds ?? [],
100
+ fields: x?.fields ?? {},
101
+ ...x?.typeId && { typeId: x.typeId },
102
+ ...x?.repeat && {
103
+ repeat: x.repeat,
104
+ nextAt: x.nextAt,
105
+ timeZone: x.timeZone
100
106
  }
101
- }), [B, V] = v(!1), H = _(), U = _(), W = (e) => z((t) => ({
107
+ }), [ne, re] = w(!1), G = C(), K = C(), q = (e) => W((t) => ({
102
108
  ...t,
103
109
  ...e
104
- })), G = T({
105
- mutationFn: async () => t(h ? await e.PUT("/api/v1/workspaces/{workspace}/teams/{key}/issue-templates/{templateId}", {
110
+ })), J = A({
111
+ mutationFn: async () => t(x ? await e.PUT("/api/v1/workspaces/{workspace}/teams/{key}/issue-templates/{templateId}", {
106
112
  params: { path: {
107
- workspace: i,
108
- key: s,
109
- templateId: h.id
113
+ workspace: a,
114
+ key: u,
115
+ templateId: x.id
110
116
  } },
111
- body: R
117
+ body: U
112
118
  }) : await e.POST("/api/v1/workspaces/{workspace}/teams/{key}/issue-templates", {
113
119
  params: { path: {
114
- workspace: i,
115
- key: s
120
+ workspace: a,
121
+ key: u
116
122
  } },
117
- body: R
123
+ body: U
118
124
  })),
119
125
  onSuccess: () => {
120
- I.invalidateQueries({ queryKey: n(i, s).queryKey }), g();
126
+ V.invalidateQueries({ queryKey: n(a, u).queryKey }), S();
121
127
  }
122
- }), K = L.filter((e) => R.labelIds?.includes(e.id));
123
- return /* @__PURE__ */ C(p, {
128
+ }), Y = H.filter((e) => U.labelIds?.includes(e.id)), { data: X = [] } = j(i(a)), { data: ie } = j(o(a)), Z = s(ie, "issue", X.find((e) => e.key === u)?.id), ae = D("customFields"), Q = D("issueTypes"), { data: oe } = j(c(a)), $ = l(oe, X.find((e) => e.key === u)?.id);
129
+ return /* @__PURE__ */ O(ee, {
124
130
  open: !0,
125
- onClose: g,
131
+ onClose: S,
126
132
  size: "lg",
127
- title: O(h ? "editTitle" : "newTitle"),
128
- footer: /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(l, {
133
+ title: N(x ? "editTitle" : "newTitle"),
134
+ footer: /* @__PURE__ */ k(te, { children: [/* @__PURE__ */ O(g, {
129
135
  variant: "secondary",
130
- onClick: g,
131
- children: A("cancel")
132
- }), /* @__PURE__ */ C(l, {
136
+ onClick: S,
137
+ children: F("cancel")
138
+ }), /* @__PURE__ */ O(g, {
133
139
  variant: "primary",
134
- loading: G.isPending,
135
- disabled: !R.name.trim(),
136
- onClick: () => G.mutate(),
137
- children: h ? A("save") : O("create")
140
+ loading: J.isPending,
141
+ disabled: !U.name.trim(),
142
+ onClick: () => J.mutate(),
143
+ children: x ? F("save") : N("create")
138
144
  })] }),
139
- children: /* @__PURE__ */ w("form", {
145
+ children: /* @__PURE__ */ k("form", {
140
146
  className: "space-y-3",
141
147
  onSubmit: (e) => {
142
- e.preventDefault(), G.mutate();
148
+ e.preventDefault(), J.mutate();
143
149
  },
144
150
  children: [
145
- /* @__PURE__ */ C("label", {
146
- htmlFor: H,
151
+ /* @__PURE__ */ O("label", {
152
+ htmlFor: G,
147
153
  className: "block text-xs font-medium text-muted-foreground",
148
- children: O("name")
154
+ children: N("name")
149
155
  }),
150
- /* @__PURE__ */ C(f, {
151
- id: H,
152
- value: R.name,
153
- onChange: (e) => W({ name: e.target.value }),
154
- placeholder: O("namePlaceholder"),
156
+ /* @__PURE__ */ O(y, {
157
+ id: G,
158
+ value: U.name,
159
+ onChange: (e) => q({ name: e.target.value }),
160
+ placeholder: N("namePlaceholder"),
155
161
  maxLength: 80,
156
162
  className: "-mt-2",
157
163
  autoFocus: !0
158
164
  }),
159
- /* @__PURE__ */ C("label", {
160
- htmlFor: U,
165
+ /* @__PURE__ */ O("label", {
166
+ htmlFor: K,
161
167
  className: "block text-xs font-medium text-muted-foreground",
162
- children: O("issueTitle")
168
+ children: N("issueTitle")
163
169
  }),
164
- /* @__PURE__ */ C(f, {
165
- id: U,
166
- value: R.title ?? "",
167
- onChange: (e) => W({ title: e.target.value }),
168
- placeholder: O("issueTitlePlaceholder"),
170
+ /* @__PURE__ */ O(y, {
171
+ id: K,
172
+ value: U.title ?? "",
173
+ onChange: (e) => q({ title: e.target.value }),
174
+ placeholder: N("issueTitlePlaceholder"),
169
175
  maxLength: 200,
170
176
  className: "-mt-2"
171
177
  }),
172
- /* @__PURE__ */ w("div", {
178
+ /* @__PURE__ */ k("div", {
173
179
  className: "text-xs font-medium text-muted-foreground",
174
- children: [O("body"), /* @__PURE__ */ C("div", {
180
+ children: [N("body"), /* @__PURE__ */ O("div", {
175
181
  className: "mt-1 min-h-32 rounded-md border border-border px-3 py-2 text-sm font-normal text-foreground",
176
- children: /* @__PURE__ */ C(c, {
177
- value: R.body ?? "",
178
- onChange: (e) => W({ body: e }),
179
- label: O("body"),
182
+ children: /* @__PURE__ */ O(h, {
183
+ value: U.body ?? "",
184
+ onChange: (e) => q({ body: e }),
185
+ label: N("body"),
180
186
  className: "min-h-28"
181
187
  })
182
188
  })]
183
189
  }),
184
- /* @__PURE__ */ w("div", {
190
+ /* @__PURE__ */ k("div", {
185
191
  className: "flex flex-wrap items-end gap-3",
186
- children: [/* @__PURE__ */ w("div", {
192
+ children: [/* @__PURE__ */ k("div", {
187
193
  className: "text-xs font-medium text-muted-foreground",
188
- children: [O("priority"), /* @__PURE__ */ C("div", {
194
+ children: [N("priority"), /* @__PURE__ */ O("div", {
189
195
  className: "mt-1",
190
- children: /* @__PURE__ */ C(m, {
191
- value: String(R.priority ?? 0),
192
- items: F.map((e, t) => ({
196
+ children: /* @__PURE__ */ O(b, {
197
+ value: String(U.priority ?? 0),
198
+ items: B.map((e, t) => ({
193
199
  value: String(t),
194
200
  label: e,
195
- icon: /* @__PURE__ */ C(a, { priority: t })
201
+ icon: /* @__PURE__ */ O(d, { priority: t })
196
202
  })),
197
- onValueChange: (e) => e !== null && W({ priority: Number(e) }),
198
- "aria-label": O("priority")
203
+ onValueChange: (e) => e !== null && q({ priority: Number(e) }),
204
+ "aria-label": N("priority")
199
205
  })
200
206
  })]
201
- }), /* @__PURE__ */ w("div", {
207
+ }), /* @__PURE__ */ k("div", {
202
208
  className: "text-xs font-medium text-muted-foreground",
203
- children: [O("labels"), /* @__PURE__ */ C("div", {
209
+ children: [N("labels"), /* @__PURE__ */ O("div", {
204
210
  className: "mt-1",
205
- children: /* @__PURE__ */ C(u, {
206
- open: B,
207
- onOpenChange: V,
211
+ children: /* @__PURE__ */ O(_, {
212
+ open: ne,
213
+ onOpenChange: re,
208
214
  multiple: !0,
209
- items: L.map((e) => ({
215
+ items: H.map((e) => ({
210
216
  value: e.id,
211
217
  label: e.name,
212
- icon: /* @__PURE__ */ C("span", {
218
+ icon: /* @__PURE__ */ O("span", {
213
219
  className: "size-2.5 rounded-full",
214
220
  style: { background: e.color }
215
221
  })
216
222
  })),
217
- value: R.labelIds ?? [],
218
- onValueChange: (e) => W({ labelIds: e }),
219
- placeholder: O("labels"),
220
- trigger: /* @__PURE__ */ C(l, {
223
+ value: U.labelIds ?? [],
224
+ onValueChange: (e) => q({ labelIds: e }),
225
+ placeholder: N("labels"),
226
+ trigger: /* @__PURE__ */ O(g, {
221
227
  type: "button",
222
228
  className: "font-normal",
223
- children: K.length ? K.map((e) => e.name).join(", ") : O("noLabels")
229
+ children: Y.length ? Y.map((e) => e.name).join(", ") : N("noLabels")
224
230
  })
225
231
  })
226
232
  })]
227
233
  })]
228
234
  }),
229
- /* @__PURE__ */ w("div", {
235
+ $.length > 0 && /* @__PURE__ */ k("div", {
236
+ className: "text-xs font-medium text-muted-foreground",
237
+ children: [Q("type"), /* @__PURE__ */ O("div", {
238
+ className: "mt-1 w-56",
239
+ children: /* @__PURE__ */ O(b, {
240
+ value: U.typeId ?? "",
241
+ items: [{
242
+ value: "",
243
+ label: Q("noType")
244
+ }, ...$.map((e) => ({
245
+ value: e.id,
246
+ label: e.name,
247
+ icon: /* @__PURE__ */ O(p, {
248
+ type: e,
249
+ className: "size-3.5"
250
+ })
251
+ }))],
252
+ onValueChange: (e) => {
253
+ let { typeId: t, ...n } = U;
254
+ W(e ? {
255
+ ...n,
256
+ typeId: e
257
+ } : n);
258
+ },
259
+ "aria-label": Q("type"),
260
+ width: "fill"
261
+ })
262
+ })]
263
+ }),
264
+ Z.length > 0 && /* @__PURE__ */ k("fieldset", {
265
+ className: "space-y-0.5 text-sm",
266
+ children: [/* @__PURE__ */ O("legend", {
267
+ className: "mb-1 text-xs font-medium text-muted-foreground",
268
+ children: ae("title")
269
+ }), Z.map((e) => /* @__PURE__ */ k("div", {
270
+ className: "flex min-h-8 items-center gap-2",
271
+ children: [/* @__PURE__ */ O("span", {
272
+ className: "w-36 shrink-0 truncate text-muted-foreground",
273
+ children: e.name
274
+ }), /* @__PURE__ */ O("div", {
275
+ className: "min-w-0 flex-1",
276
+ children: /* @__PURE__ */ O(m, {
277
+ workspace: a,
278
+ property: e,
279
+ value: U.fields?.[e.id],
280
+ editable: !0,
281
+ onChange: (t) => q({ fields: {
282
+ ...U.fields,
283
+ [e.id]: t
284
+ } })
285
+ })
286
+ })]
287
+ }, e.id))]
288
+ }),
289
+ /* @__PURE__ */ k("div", {
230
290
  className: "flex flex-wrap items-end gap-3",
231
- children: [/* @__PURE__ */ w("div", {
291
+ children: [/* @__PURE__ */ k("div", {
232
292
  className: "text-xs font-medium text-muted-foreground",
233
- children: [O("repeat"), /* @__PURE__ */ C("div", {
293
+ children: [N("repeat"), /* @__PURE__ */ O("div", {
234
294
  className: "mt-1",
235
- children: /* @__PURE__ */ C(m, {
236
- value: R.repeat ?? "",
295
+ children: /* @__PURE__ */ O(b, {
296
+ value: U.repeat ?? "",
237
297
  items: [
238
298
  "",
239
299
  "daily",
@@ -241,60 +301,60 @@ function A({ workspace: i, teamKey: s, template: h, onClose: g }) {
241
301
  "monthly"
242
302
  ].map((e) => ({
243
303
  value: e,
244
- label: O(`repeats.${e || "never"}`)
304
+ label: N(`repeats.${e || "never"}`)
245
305
  })),
246
306
  onValueChange: (e) => {
247
- if (!e) return z(({ repeat: e, nextAt: t, timeZone: n, ...r }) => r);
248
- W({
307
+ if (!e) return W(({ repeat: e, nextAt: t, timeZone: n, ...r }) => r);
308
+ q({
249
309
  repeat: e,
250
- nextAt: R.nextAt ?? N(new Date(Date.now() + 864e5)),
251
- timeZone: R.timeZone ?? j()
310
+ nextAt: U.nextAt ?? R(new Date(Date.now() + 864e5)),
311
+ timeZone: U.timeZone ?? I()
252
312
  });
253
313
  },
254
- "aria-label": O("repeat")
314
+ "aria-label": N("repeat")
255
315
  })
256
316
  })]
257
- }), R.repeat && /* @__PURE__ */ w("div", {
317
+ }), U.repeat && /* @__PURE__ */ k("div", {
258
318
  className: "text-xs font-medium text-muted-foreground",
259
- children: [O("firstOn"), /* @__PURE__ */ C("div", {
319
+ children: [N("firstOn"), /* @__PURE__ */ O("div", {
260
320
  className: "mt-1",
261
- children: /* @__PURE__ */ C(d, {
262
- value: R.nextAt ? M(R.nextAt) : "",
263
- onValueChange: (e) => e && W({
264
- nextAt: N(/* @__PURE__ */ new Date(`${e}T00:00`)),
265
- timeZone: j()
321
+ children: /* @__PURE__ */ O(v, {
322
+ value: U.nextAt ? L(U.nextAt) : "",
323
+ onValueChange: (e) => e && q({
324
+ nextAt: R(/* @__PURE__ */ new Date(`${e}T00:00`)),
325
+ timeZone: I()
266
326
  }),
267
- "aria-label": O("firstOn"),
268
- trigger: /* @__PURE__ */ C(l, {
327
+ "aria-label": N("firstOn"),
328
+ trigger: /* @__PURE__ */ O(g, {
269
329
  type: "button",
270
330
  className: "font-normal",
271
- children: R.nextAt ? k.dateTime(new Date(R.nextAt), { dateStyle: "medium" }) : ""
331
+ children: U.nextAt ? P.dateTime(new Date(U.nextAt), { dateStyle: "medium" }) : ""
272
332
  })
273
333
  })
274
334
  })]
275
335
  })]
276
336
  }),
277
- R.repeat && /* @__PURE__ */ C("p", {
337
+ U.repeat && /* @__PURE__ */ O("p", {
278
338
  className: "text-xs text-muted-foreground",
279
- children: O("repeatHelp")
339
+ children: N("repeatHelp")
280
340
  }),
281
- G.error && /* @__PURE__ */ C("p", {
341
+ J.error && /* @__PURE__ */ O("p", {
282
342
  className: "text-sm text-danger",
283
- children: P(G.error)
343
+ children: z(J.error)
284
344
  })
285
345
  ]
286
346
  })
287
347
  });
288
348
  }
289
- function j() {
349
+ function I() {
290
350
  return Intl.DateTimeFormat().resolvedOptions().timeZone;
291
351
  }
292
- function M(e) {
352
+ function L(e) {
293
353
  let t = new Date(e), n = (e) => String(e).padStart(2, "0");
294
354
  return `${t.getFullYear()}-${n(t.getMonth() + 1)}-${n(t.getDate())}`;
295
355
  }
296
- function N(e) {
356
+ function R(e) {
297
357
  let t = new Date(e);
298
358
  return t.setHours(9, 0, 0, 0), t.toISOString();
299
359
  }
300
- export { k as IssueTemplates };
360
+ export { P as IssueTemplates };