@haneinfo/frontend-instances 0.0.0-stage → 0.2.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/dist/client.js ADDED
@@ -0,0 +1,465 @@
1
+ 'use client';
2
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, Input, ListPagination } from '@haneinfo/frontend-shell';
4
+ import { useEffect, useId, useRef, useState } from 'react';
5
+ import { operators, } from './contracts.js';
6
+ import { canPoll, dateRange, fieldValue, importMapping, listHref, textValue } from './query.js';
7
+ const box = 'rounded-md border bg-card p-4';
8
+ const selectClass = 'min-w-0 rounded-md border bg-background px-3 py-2 text-foreground';
9
+ class RequestFailure extends Error {
10
+ constructor(reason) {
11
+ super(reason.key);
12
+ this.reason = reason;
13
+ }
14
+ }
15
+ async function call(action, request) {
16
+ const result = await action(request);
17
+ if (result.error)
18
+ throw new RequestFailure(result.error);
19
+ return result.data;
20
+ }
21
+ function useTask() {
22
+ const lock = useRef(false);
23
+ const [pending, setPending] = useState(false);
24
+ const [error, setError] = useState();
25
+ async function run(work) {
26
+ if (lock.current)
27
+ return;
28
+ lock.current = true;
29
+ setPending(true);
30
+ setError(undefined);
31
+ try {
32
+ await work();
33
+ }
34
+ catch (error) {
35
+ setError(error instanceof RequestFailure
36
+ ? error.reason
37
+ : {
38
+ key: error instanceof Error && error.message === 'invalidInput'
39
+ ? 'invalidInput'
40
+ : 'requestFailed',
41
+ });
42
+ }
43
+ finally {
44
+ lock.current = false;
45
+ setPending(false);
46
+ }
47
+ }
48
+ return { pending, error, run };
49
+ }
50
+ function ErrorMessage({ error, labels }) {
51
+ return error ? (_jsxs("p", { role: "alert", className: "break-words text-destructive", children: [labels[error.key], error.message && `: ${error.message}`] })) : null;
52
+ }
53
+ const inaccessible = (error) => error && ['unauthorized', 'forbidden', 'notFound'].includes(error.key);
54
+ function labelOf(field, labels) {
55
+ const system = {
56
+ $state: 'state',
57
+ $number: 'number',
58
+ $submitterId: 'submitter',
59
+ $createdAt: 'createdAt',
60
+ };
61
+ return system[field.id] ? labels[system[field.id]] : field.label;
62
+ }
63
+ function newRule(fields) {
64
+ return {
65
+ kind: 'PREDICATE',
66
+ operator: 'EQ',
67
+ left: { kind: 'FIELD', fieldId: fields[0]?.id ?? '' },
68
+ right: { kind: 'LITERAL', value: '' },
69
+ };
70
+ }
71
+ export function FilterEditor({ condition, fields, labels, onChange, depth = 0, }) {
72
+ const t = labels;
73
+ if (condition.kind === 'GROUP')
74
+ return (_jsxs("fieldset", { className: "flex min-w-0 flex-col gap-3 rounded-md border p-3", children: [_jsx("legend", { className: "px-1 text-sm", children: t.filters }), _jsxs("select", { "aria-label": t.operator, className: selectClass, value: condition.operator, onChange: (e) => onChange({ ...condition, operator: e.target.value }), children: [_jsx("option", { value: "AND", children: t.AND }), _jsx("option", { value: "OR", children: t.OR })] }), condition.expressions.map((child, index) => (
75
+ // biome-ignore lint/suspicious/noArrayIndexKey: These controlled positional rows have no local input state.
76
+ _jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [_jsx(FilterEditor, { condition: child, fields: fields, labels: t, depth: depth + 1, onChange: (value) => onChange({
77
+ ...condition,
78
+ expressions: condition.expressions.map((entry, i) => i === index ? value : entry),
79
+ }) }), _jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => onChange({
80
+ ...condition,
81
+ expressions: condition.expressions.filter((_, i) => i !== index),
82
+ }), children: t.remove })] }, `${depth}-${index}`))), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "button", variant: "outline", disabled: !fields.length, onClick: () => onChange({ ...condition, expressions: [...condition.expressions, newRule(fields)] }), children: t.addRule }), depth < 4 && (_jsx(Button, { type: "button", variant: "outline", onClick: () => onChange({
83
+ ...condition,
84
+ expressions: [
85
+ ...condition.expressions,
86
+ { kind: 'GROUP', operator: 'OR', expressions: [newRule(fields)] },
87
+ ],
88
+ }), children: t.addGroup }))] })] }));
89
+ if (!editablePredicate(condition))
90
+ return _jsx("pre", { className: "whitespace-pre-wrap break-words", children: textValue(condition) });
91
+ const field = fields.find((f) => f.id === condition.left.fieldId);
92
+ const right = condition.right;
93
+ const value = Array.isArray(right)
94
+ ? right.map((r) => String(r.value ?? '')).join('\n')
95
+ : String(right?.value ?? '');
96
+ let inputType = field?.type === 'number' ? 'number' : field?.type === 'date' ? 'date' : 'text';
97
+ if (field?.type === 'datetime')
98
+ inputType = 'datetime-local';
99
+ const shown = inputType === 'datetime-local' && value.endsWith('Z') ? value.slice(0, 23) : value;
100
+ return (_jsxs("div", { className: "grid min-w-0 gap-2 sm:grid-cols-3", children: [_jsx("select", { "aria-label": t.field, className: selectClass, value: field?.id ?? '', onChange: (e) => onChange({
101
+ ...condition,
102
+ left: { kind: 'FIELD', fieldId: e.target.value },
103
+ right: { kind: 'LITERAL', value: '' },
104
+ }), children: fields.map((f) => (_jsx("option", { value: f.id, children: labelOf(f, t) }, f.id))) }), _jsx("select", { "aria-label": t.operator, className: selectClass, value: condition.operator, onChange: (e) => onChange({
105
+ ...condition,
106
+ operator: e.target.value,
107
+ right: e.target.value === 'IN' ? [] : { kind: 'LITERAL', value: '' },
108
+ }), children: operators.map((op) => (_jsx("option", { value: op, children: t[op] }, op))) }), condition.operator !== 'NOT_EMPTY' &&
109
+ (condition.operator === 'IN' ? (_jsx("textarea", { className: selectClass, "aria-label": t.value, value: value, onChange: (e) => onChange({
110
+ ...condition,
111
+ right: e.target.value.split('\n').map((v) => ({
112
+ kind: 'LITERAL',
113
+ value: field?.type === 'number' && v.trim() ? Number(v) : v,
114
+ })),
115
+ }) })) : (_jsx(Input, { type: inputType, step: "any", "aria-label": field?.type === 'datetime' ? `${t.value} (UTC)` : t.value, value: shown, onChange: (e) => onChange({
116
+ ...condition,
117
+ right: {
118
+ kind: 'LITERAL',
119
+ value: field?.type === 'number' && e.target.value !== ''
120
+ ? Number(e.target.value)
121
+ : e.target.value,
122
+ },
123
+ }) })))] }));
124
+ }
125
+ /** Normalizes datetime literals once, immediately before the API request. */
126
+ function editablePredicate(condition) {
127
+ const operands = Array.isArray(condition.right)
128
+ ? condition.right
129
+ : condition.right
130
+ ? [condition.right]
131
+ : [];
132
+ return condition.left?.kind === 'FIELD' && operands.every((right) => right.kind === 'LITERAL');
133
+ }
134
+ function prepareFilter(condition, fields) {
135
+ if (condition.kind === 'GROUP') {
136
+ const expressions = condition.expressions.flatMap((child) => {
137
+ const result = prepareFilter(child, fields);
138
+ return result ? [result] : [];
139
+ });
140
+ return expressions.length ? { ...condition, expressions } : undefined;
141
+ }
142
+ if (!editablePredicate(condition))
143
+ return condition;
144
+ const field = fields.find((f) => f.id === condition.left.fieldId);
145
+ if (!field?.filterable)
146
+ throw new Error('invalidInput');
147
+ if (condition.operator === 'NOT_EMPTY')
148
+ return { kind: 'PREDICATE', operator: condition.operator, left: condition.left };
149
+ const normalize = (literal) => ({
150
+ kind: 'LITERAL',
151
+ value: fieldValue(String(literal.value ?? ''), field),
152
+ });
153
+ if (!condition.right)
154
+ throw new Error('invalidInput');
155
+ return {
156
+ ...condition,
157
+ right: Array.isArray(condition.right)
158
+ ? condition.right.map(normalize)
159
+ : normalize(condition.right),
160
+ };
161
+ }
162
+ export { prepareFilter };
163
+ function Anchor({ href, children, className, }) {
164
+ return (_jsx("a", { href: href, className: className, children: children }));
165
+ }
166
+ export function ListClient({ fields, initial, initialQuery, views: initialViews, machineCode, basePath, labels: t, action, }) {
167
+ const task = useTask();
168
+ const limitId = useId();
169
+ const rangeId = useId();
170
+ const [query, setQuery] = useState(initialQuery);
171
+ const [result, setResult] = useState(initial);
172
+ const [filter, setFilter] = useState(initialQuery.filter ?? { kind: 'GROUP', operator: 'AND', expressions: [] });
173
+ const [sort, setSort] = useState(initialQuery.sort ?? []);
174
+ const [columns, setColumns] = useState(initialQuery.columns ?? fields.map((f) => f.id));
175
+ const [limit, setLimit] = useState(initialQuery.limit ?? 50);
176
+ const [views, setViews] = useState(initialViews);
177
+ const [name, setName] = useState('');
178
+ const [job, setJob] = useState();
179
+ const [format, setFormat] = useState('csv');
180
+ const dateFields = fields.filter((f) => f.filterable && ['date', 'datetime'].includes(f.type));
181
+ const [rangeField, setRangeField] = useState(dateFields[0]?.id ?? '');
182
+ const [from, setFrom] = useState(''), [to, setTo] = useState('');
183
+ if (inaccessible(task.error))
184
+ return _jsx(ErrorMessage, { error: task.error, labels: t });
185
+ const draft = () => ({ filter: prepareFilter(filter, fields), sort, columns, limit, offset: 0 });
186
+ const apply = async (next) => {
187
+ const data = await call(action, { kind: 'query', machineCode, query: next });
188
+ setResult(data);
189
+ setQuery(next);
190
+ };
191
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsx("form", { className: `${box} flex flex-col gap-4`, onSubmit: (e) => {
192
+ e.preventDefault();
193
+ void task.run(() => apply(draft()));
194
+ }, children: _jsxs("fieldset", { disabled: task.pending, className: "flex min-w-0 flex-col gap-4", children: [_jsx(FilterEditor, { condition: filter, fields: fields.filter((f) => f.filterable), labels: t, onChange: setFilter }), !!dateFields.length && (_jsxs("fieldset", { className: "grid gap-2 rounded-md border p-3 sm:grid-cols-4", children: [_jsx("legend", { children: t.addRange }), _jsx("select", { "aria-label": `${t.addRange}: ${t.field}`, className: selectClass, value: rangeField, onChange: (e) => {
195
+ setRangeField(e.target.value);
196
+ setFrom('');
197
+ setTo('');
198
+ }, children: dateFields.map((f) => (_jsx("option", { value: f.id, children: labelOf(f, t) }, f.id))) }), _jsxs("label", { htmlFor: `${rangeId}-from`, className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { children: t.rangeFrom }), _jsx(Input, { id: `${rangeId}-from`, "aria-label": t.rangeFrom, type: fields.find((f) => f.id === rangeField)?.type === 'datetime'
199
+ ? 'datetime-local'
200
+ : 'date', value: from, onChange: (e) => setFrom(e.target.value) })] }), _jsxs("label", { htmlFor: `${rangeId}-to`, className: "flex flex-col gap-1 text-sm", children: [_jsx("span", { children: t.rangeTo }), _jsx(Input, { id: `${rangeId}-to`, "aria-label": t.rangeTo, type: fields.find((f) => f.id === rangeField)?.type === 'datetime'
201
+ ? 'datetime-local'
202
+ : 'date', value: to, min: from, onChange: (e) => setTo(e.target.value) })] }), _jsx(Button, { variant: "outline", type: "button", disabled: !from || !to || from > to, onClick: () => {
203
+ const f = fields.find((f) => f.id === rangeField);
204
+ if (f) {
205
+ const range = dateRange(f, from, to);
206
+ setFilter((previous) => ({
207
+ kind: 'GROUP',
208
+ operator: 'AND',
209
+ expressions: [previous, range],
210
+ }));
211
+ }
212
+ }, children: t.addRange })] })), _jsxs("fieldset", { className: "flex flex-col gap-2", children: [_jsx("legend", { children: t.sort }), sort.map((entry, index) => (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx("select", { "aria-label": `${t.sort}: ${t.field}`, className: selectClass, value: entry.fieldId, onChange: (e) => setSort(sort.map((s, i) => (i === index ? { ...s, fieldId: e.target.value } : s))), children: fields
213
+ .filter((f) => f.sortable)
214
+ .map((f) => (_jsx("option", { value: f.id, disabled: f.id !== entry.fieldId && sort.some((s) => s.fieldId === f.id), children: labelOf(f, t) }, f.id))) }), _jsxs("select", { "aria-label": t.sort, className: selectClass, value: entry.direction, onChange: (e) => setSort(sort.map((s, i) => i === index ? { ...s, direction: e.target.value } : s)), children: [_jsx("option", { value: "asc", children: t.asc }), _jsx("option", { value: "desc", children: t.desc })] }), _jsx(Button, { type: "button", variant: "outline", onClick: () => setSort(sort.filter((_, i) => i !== index)), children: t.remove })] }, entry.fieldId))), _jsx(Button, { type: "button", variant: "outline", disabled: sort.length >= 8 || !fields.some((f) => f.sortable), onClick: () => {
215
+ const f = fields.find((f) => f.sortable && !sort.some((s) => s.fieldId === f.id));
216
+ if (f)
217
+ setSort([...sort, { fieldId: f.id, direction: 'asc' }]);
218
+ }, children: t.sort })] }), _jsxs("fieldset", { className: "flex flex-wrap gap-3", children: [_jsx("legend", { children: t.columns }), fields.map((f) => (_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", checked: columns.includes(f.id), onChange: (e) => setColumns(e.target.checked ? [...columns, f.id] : columns.filter((c) => c !== f.id)) }), labelOf(f, t)] }, f.id)))] }), _jsxs("label", { htmlFor: limitId, className: "flex items-center gap-2", children: [t.limit, _jsx(Input, { id: limitId, className: "w-24", type: "number", min: 1, max: 500, value: limit, onChange: (e) => setLimit(Number(e.target.value)) })] }), _jsx(Button, { type: "submit", disabled: !columns.length, children: t.apply })] }) }), _jsxs("section", { className: `${box} flex flex-col gap-3`, "aria-label": t.savedViews, children: [_jsx("h2", { className: "font-semibold", children: t.savedViews }), _jsxs("form", { className: "flex flex-wrap gap-2", onSubmit: (e) => {
219
+ e.preventDefault();
220
+ void task.run(async () => {
221
+ const view = await call(action, {
222
+ kind: 'saveView',
223
+ machineCode,
224
+ name,
225
+ query: draft(),
226
+ });
227
+ setViews([...views, view]);
228
+ setName('');
229
+ });
230
+ }, children: [_jsx(Input, { "aria-label": t.viewName, maxLength: 200, required: true, value: name, onChange: (e) => setName(e.target.value) }), _jsx(Button, { disabled: task.pending || !name.trim(), type: "submit", children: t.saveView })] }), views.map((view) => (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "break-all", children: view.name }), _jsxs("span", { className: "text-sm text-muted-foreground", children: [t[view.visibility], " ", view.roles.join(', ')] }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
231
+ void task.run(async () => {
232
+ await apply(view.query);
233
+ setFilter(view.query.filter ?? { kind: 'GROUP', operator: 'AND', expressions: [] });
234
+ setSort(view.query.sort ?? []);
235
+ setColumns(view.query.columns ?? fields.map((f) => f.id));
236
+ setLimit(view.query.limit ?? 50);
237
+ });
238
+ }, children: t.apply }), view.canShare && (_jsx(ShareForm, { view: view, labels: t, disabled: task.pending, onShare: (visibility, roles) => {
239
+ void task.run(async () => {
240
+ await call(action, { kind: 'shareView', id: view.id, visibility, roles });
241
+ setViews(views.map((v) => (v.id === view.id ? { ...v, visibility, roles } : v)));
242
+ });
243
+ } }))] }, view.id)))] }), _jsxs("div", { className: "max-w-full overflow-x-auto rounded-md border", children: [_jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { className: "p-3", children: t.open }), result.columns.map((id) => (_jsx("th", { className: "p-3", children: labelOf(fields.find((f) => f.id === id) ?? { id, label: id }, t) }, id)))] }) }), _jsx("tbody", { children: result.items.map((item) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "p-3", children: _jsx("a", { className: "underline", href: `${basePath}/${encodeURIComponent(item.id)}`, children: item.number ?? t.open }) }), result.columns.map((id) => (_jsx("td", { className: "max-w-64 break-words p-3", children: textValue(id === '$submitterId'
244
+ ? (item.submitterName ?? item.submitterId)
245
+ : item.values[id]) }, id)))] }, item.id))) })] }), !result.items.length && _jsx("p", { className: "p-4", children: t.empty })] }), _jsx(ListPagination, { page: Math.floor(result.offset / result.limit) + 1, totalPages: Math.max(1, Math.ceil(result.total / result.limit)), total: result.total, LinkComponent: Anchor, buildPageHref: (page) => listHref(basePath, { ...query, offset: (page - 1) * result.limit, limit: result.limit }), previousText: t.previous, nextText: t.next, infoText: `${t.total}: ${result.total}` }), _jsxs("form", { className: "flex flex-wrap items-center gap-2", onSubmit: (e) => {
246
+ e.preventDefault();
247
+ void task.run(async () => setJob(await call(action, { kind: 'export', machineCode, query, format })));
248
+ }, children: [_jsxs("select", { "aria-label": t.format, className: selectClass, value: format, onChange: (e) => setFormat(e.target.value), children: [_jsx("option", { value: "csv", children: t.csv }), _jsx("option", { value: "xlsx", children: t.xlsx })] }), _jsx(Button, { type: "submit", disabled: task.pending, children: t.export })] }), job && (_jsx(JobStatus, { initial: job, labels: t, action: action, downloadBase: `${basePath}/download` }, job.id))] }));
249
+ }
250
+ function ShareForm({ view, labels: t, disabled, onShare, }) {
251
+ const [visibility, setVisibility] = useState(view.visibility), [roles, setRoles] = useState(view.roles.join(', '));
252
+ return (_jsxs("form", { className: "flex flex-wrap gap-2", onSubmit: (e) => {
253
+ e.preventDefault();
254
+ onShare(visibility, roles
255
+ .split(',')
256
+ .map((r) => r.trim())
257
+ .filter(Boolean));
258
+ }, children: [_jsx("select", { "aria-label": t.share, className: selectClass, disabled: disabled, value: visibility, onChange: (e) => setVisibility(e.target.value), children: ['PRIVATE', 'ALL', 'ROLES'].map((value) => (_jsx("option", { value: value, children: t[value] }, value))) }), visibility === 'ROLES' && (_jsx(Input, { "aria-label": t.roles, required: true, value: roles, onChange: (e) => setRoles(e.target.value) })), _jsx(Button, { disabled: disabled, type: "submit", variant: "outline", children: t.share })] }));
259
+ }
260
+ function DataFields({ fields, data }) {
261
+ const flatten = (fields) => fields.flatMap((field) => (field.children ? flatten(field.children) : [field]));
262
+ const flattened = flatten(fields);
263
+ return (_jsx("dl", { className: "grid gap-3 sm:grid-cols-2", children: flattened
264
+ .filter((f) => (f.id ?? f.key) in data)
265
+ .map((field) => (_jsxs("div", { className: "min-w-0", children: [_jsx("dt", { className: "text-sm text-muted-foreground", children: field.label }), _jsx("dd", { className: "whitespace-pre-wrap break-words", children: textValue(data[field.id ?? field.key]) })] }, field.id ?? field.key))) }));
266
+ }
267
+ export function DetailClient({ id, data, fields, state, submitterId, submitterName, createdAt, initial, initialNumbers, labels: t, action, }) {
268
+ const task = useTask();
269
+ const [timeline, setTimeline] = useState(initial), [body, setBody] = useState('');
270
+ const [q, setQ] = useState(''), [people, setPeople] = useState(), [selected, setSelected] = useState('');
271
+ if (inaccessible(task.error))
272
+ return _jsx(ErrorMessage, { error: task.error, labels: t });
273
+ const loadTimeline = async (append) => {
274
+ const next = await call(action, {
275
+ kind: 'timeline',
276
+ id,
277
+ offset: append ? timeline.offset + timeline.items.length : 0,
278
+ });
279
+ setTimeline(append
280
+ ? {
281
+ ...next,
282
+ offset: 0,
283
+ items: [...timeline.items, ...next.items].filter((e, i, all) => all.findIndex((other) => other.id === e.id) === i),
284
+ }
285
+ : next);
286
+ };
287
+ const numbers = timeline.items.filter((e) => e.kind === 'NUMBER');
288
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsxs("section", { className: `${box} flex flex-col gap-4`, children: [_jsxs("dl", { className: "grid gap-3 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("dt", { children: t.state }), _jsx("dd", { children: state })] }), _jsxs("div", { children: [_jsx("dt", { children: t.number }), _jsx("dd", { children: initialNumbers?.length
289
+ ? initialNumbers.join(', ')
290
+ : numbers.length
291
+ ? numbers.map((e) => textValue(e.details.number)).join(', ')
292
+ : '—' })] }), _jsxs("div", { children: [_jsx("dt", { children: t.submitter }), _jsx("dd", { children: textValue(submitterName ?? submitterId) })] }), _jsxs("div", { children: [_jsx("dt", { children: t.createdAt }), _jsx("dd", { children: createdAt })] })] }), _jsx(DataFields, { fields: fields, data: data })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx("p", { role: "status", children: timeline.following ? t.following : t.notFollowing }), _jsx(Button, { disabled: task.pending, type: "button", onClick: () => {
293
+ void task.run(async () => {
294
+ const next = await call(action, {
295
+ kind: 'follow',
296
+ id,
297
+ enabled: !timeline.following,
298
+ });
299
+ setTimeline({ ...timeline, following: next.following });
300
+ });
301
+ }, children: timeline.following ? t.unfollow : t.follow })] }), _jsxs("section", { className: `${box} flex flex-col gap-3`, "aria-label": t.timeline, children: [_jsx("h2", { className: "font-semibold", children: t.timeline }), _jsx("ol", { className: "flex flex-col gap-4", children: timeline.items.map((event) => (_jsx(TimelineItem, { event: event, labels: t }, event.id))) }), !timeline.items.length && _jsx("p", { children: t.empty }), timeline.hasMore && (_jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
302
+ void task.run(() => loadTimeline(true));
303
+ }, children: t.loadMore }))] }), _jsxs("form", { className: `${box} flex flex-col gap-3`, onSubmit: (e) => {
304
+ e.preventDefault();
305
+ void task.run(async () => {
306
+ await call(action, { kind: 'comment', id, body });
307
+ setBody('');
308
+ await loadTimeline(false);
309
+ });
310
+ }, children: [_jsxs("label", { className: "flex flex-col gap-2", children: [t.comment, _jsx("textarea", { required: true, "aria-label": t.comment, maxLength: 4000, className: `${selectClass} min-h-28`, value: body, onChange: (e) => setBody(e.target.value) })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Input, { "aria-label": t.mentionSearch, maxLength: 200, value: q, onChange: (e) => setQ(e.target.value) }), _jsx(Button, { type: "button", variant: "outline", disabled: task.pending, onClick: () => {
311
+ void task.run(async () => {
312
+ const result = await call(action, {
313
+ kind: 'mentionable',
314
+ id,
315
+ q,
316
+ });
317
+ setPeople(result.items);
318
+ setSelected(result.items[0]?.id ?? '');
319
+ });
320
+ }, children: t.search })] }), people &&
321
+ (people.length ? (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx("select", { className: selectClass, "aria-label": t.mention, value: selected, onChange: (e) => setSelected(e.target.value), children: people.map((p) => (_jsx("option", { value: p.id, children: p.name ?? t.unnamed }, p.id))) }), _jsx(Button, { type: "button", disabled: task.pending || !selected, variant: "outline", onClick: () => setBody((value) => `${value}${value ? ' ' : ''}@{${selected}} `), children: t.mention })] })) : (_jsx("p", { children: t.noPeople }))), _jsx(Button, { type: "submit", disabled: task.pending || !body.trim() || body.length > 4000, children: t.sendComment })] })] }));
322
+ }
323
+ function TimelineItem({ event, labels: t }) {
324
+ return (_jsxs("li", { className: "min-w-0 border-l-2 pl-3", children: [_jsxs("p", { className: "text-sm text-muted-foreground", children: [_jsx("time", { dateTime: event.at, children: event.at }), " \u00B7 ", t[event.kind], " \u00B7 ", textValue(event.actorId)] }), event.kind === 'COMMENT' ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "whitespace-pre-wrap break-words", children: textValue(event.details.body) }), event.details.isAiGenerated === true && (_jsx("strong", { className: "text-sm", children: t.aiGenerated }))] })) : (_jsx("p", { className: "whitespace-pre-wrap break-words", children: textValue(event.details) }))] }));
325
+ }
326
+ export function JobStatus({ initial, labels: t, action, downloadBase, onComplete, }) {
327
+ const [job, setJob] = useState(initial), [attempt, setAttempt] = useState(0), [stopped, setStopped] = useState(false);
328
+ const [error, setError] = useState();
329
+ const complete = useRef(onComplete);
330
+ complete.current = onComplete;
331
+ // biome-ignore lint/correctness/useExhaustiveDependencies: attempt is the explicit manual refresh signal.
332
+ useEffect(() => {
333
+ let active = true, timer;
334
+ let polls = 0;
335
+ setStopped(false);
336
+ setError(undefined);
337
+ const poll = async () => {
338
+ try {
339
+ const next = await call(action, { kind: 'job', id: initial.id });
340
+ if (!active)
341
+ return;
342
+ setJob(next);
343
+ if (!canPoll(next)) {
344
+ complete.current?.(next);
345
+ return;
346
+ }
347
+ if (++polls >= 90) {
348
+ setStopped(true);
349
+ return;
350
+ }
351
+ timer = setTimeout(poll, 2000);
352
+ }
353
+ catch (error) {
354
+ if (active) {
355
+ setError(error instanceof RequestFailure ? error.reason : { key: 'requestFailed' });
356
+ setStopped(true);
357
+ }
358
+ }
359
+ };
360
+ if (canPoll(initial))
361
+ timer = setTimeout(poll, 2000);
362
+ else
363
+ complete.current?.(initial);
364
+ return () => {
365
+ active = false;
366
+ clearTimeout(timer);
367
+ };
368
+ }, [initial, action, attempt]);
369
+ if (inaccessible(error))
370
+ return _jsx(ErrorMessage, { error: error, labels: t });
371
+ return (_jsxs("section", { className: `${box} flex flex-col gap-2`, "aria-label": t.job, children: [_jsxs("p", { role: "status", children: [t.job, ": ", t[job.status], " (", Math.max(0, Math.min(100, job.progress)), "%)"] }), _jsx("progress", { "aria-label": t.job, value: Math.max(0, Math.min(100, job.progress)), max: 100, className: "w-full" }), _jsx(ErrorMessage, { error: error, labels: t }), job.lastError && (_jsx("p", { role: "alert", className: "break-words text-destructive", children: job.lastError })), stopped && (_jsxs("div", { children: [_jsx("p", { children: t.pollStopped }), _jsx(Button, { type: "button", variant: "outline", onClick: () => setAttempt(attempt + 1), children: t.retry })] })), job.status === 'SUCCEEDED' && job.result && (_jsx(JobReport, { result: job.result, labels: t, downloadBase: downloadBase }))] }));
372
+ }
373
+ export function JobReport({ result, labels: t, downloadBase, }) {
374
+ const failures = result.kind === 'preflight'
375
+ ? (result.rows ?? []).filter((r) => r.errors.length)
376
+ : Array.isArray(result.failed)
377
+ ? result.failed
378
+ : [];
379
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-3", children: [_jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsxs("span", { children: [t.total, ": ", result.total ?? result.rowCount ?? 0] }), result.kind === 'preflight' && (_jsxs("span", { children: [t.valid, ": ", result.valid ?? 0] })), result.kind === 'import' && (_jsxs("span", { children: [t.success, ": ", result.imported?.length ?? 0] })), result.kind !== 'export' && (_jsxs("span", { children: [t.failed, ": ", Array.isArray(result.failed) ? result.failed.length : (result.failed ?? 0)] }))] }), (result.errors ?? []).map((error) => (_jsxs("p", { className: "break-words text-destructive", children: [error.code, ": ", error.message] }, `${error.code}-${error.path}-${error.message}`))), !!failures.length && (_jsx("div", { className: "max-h-96 overflow-auto", children: _jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: t.row }), _jsx("th", { children: t.value }), _jsx("th", { children: t.code }), _jsx("th", { children: t.reason })] }) }), _jsx("tbody", { children: failures.map((row) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "p-2", children: row.rowNumber }), _jsx("td", { className: "max-w-64 break-words p-2", children: row.data ? textValue(row.data) : '—' }), _jsx("td", { className: "p-2", children: row.errors.map((e) => e.code).join(', ') }), _jsx("td", { className: "max-w-64 break-words p-2", children: row.errors.map((e) => e.message).join('; ') })] }, row.rowNumber))) })] }) })), result.downloadPath && (_jsx("a", { className: "underline", href: `${downloadBase}?${new URLSearchParams({ path: result.downloadPath })}`, children: result.kind === 'export' ? t.download : t.downloadErrors }))] }));
380
+ }
381
+ export function ImportClient({ machines, fields: initialFields, labels: t, action, uploadAction, downloadBase, }) {
382
+ const task = useTask();
383
+ const fileId = useId();
384
+ const [machine, setMachine] = useState(machines[0]?.code ?? ''), [fields, setFields] = useState(initialFields);
385
+ const [upload, setUpload] = useState();
386
+ const [targets, setTargets] = useState([]), [keys, setKeys] = useState([]);
387
+ const [preflight, setPreflight] = useState(), [completed, setCompleted] = useState(), [imported, setImported] = useState();
388
+ const [confirmed, setConfirmed] = useState(false);
389
+ const reset = () => {
390
+ setPreflight(undefined);
391
+ setCompleted(undefined);
392
+ setImported(undefined);
393
+ setConfirmed(false);
394
+ };
395
+ if (inaccessible(task.error))
396
+ return _jsx(ErrorMessage, { error: task.error, labels: t });
397
+ return (_jsxs("div", { className: "flex min-w-0 flex-col gap-4", "aria-busy": task.pending, children: [_jsx("p", { children: t.importHint }), _jsx(ErrorMessage, { error: task.error, labels: t }), task.pending && _jsx("p", { role: "status", children: t.loading }), _jsxs("label", { className: "flex flex-col gap-2", children: [t.machine, _jsx("select", { className: selectClass, disabled: task.pending, value: machine, onChange: (e) => {
398
+ const code = e.target.value;
399
+ void task.run(async () => {
400
+ const next = await call(action, {
401
+ kind: 'importFields',
402
+ machineCode: code,
403
+ });
404
+ setMachine(code);
405
+ setFields(next);
406
+ setUpload(undefined);
407
+ setTargets([]);
408
+ setKeys([]);
409
+ reset();
410
+ });
411
+ }, children: machines.map((m) => (_jsx("option", { value: m.code, children: m.label }, m.code))) })] }), _jsxs("form", { className: `${box} flex flex-col gap-3`, onSubmit: (e) => {
412
+ e.preventDefault();
413
+ const form = new FormData(e.currentTarget);
414
+ void task.run(async () => {
415
+ reset();
416
+ setUpload(undefined);
417
+ const result = await uploadAction(form);
418
+ if (result.error)
419
+ throw new RequestFailure(result.error);
420
+ const next = result.data;
421
+ setUpload(next);
422
+ setTargets(next.headers.map((header) => (fields.some((f) => f.key === header) ? header : '')));
423
+ setKeys([]);
424
+ });
425
+ }, children: [_jsxs("label", { htmlFor: fileId, className: "flex flex-col gap-2", children: [t.file, _jsx(Input, { id: fileId, name: "file", type: "file", accept: ".csv,.xlsx", required: true, disabled: task.pending, onChange: () => {
426
+ setUpload(undefined);
427
+ reset();
428
+ } })] }), _jsx(Button, { type: "submit", disabled: task.pending, children: t.readHeaders })] }), upload && (_jsx("form", { className: `${box} flex flex-col gap-4`, onSubmit: (e) => {
429
+ e.preventDefault();
430
+ void task.run(async () => {
431
+ const mapping = importMapping(upload.headers, targets, keys, fields);
432
+ reset();
433
+ setPreflight(await call(action, {
434
+ kind: 'preflight',
435
+ input: {
436
+ machineCode: machine,
437
+ format: upload.format,
438
+ contentBase64: upload.contentBase64,
439
+ ...mapping,
440
+ },
441
+ }));
442
+ });
443
+ }, children: _jsxs("fieldset", { disabled: task.pending || !!preflight, className: "flex flex-col gap-3", children: [_jsx("legend", { className: "font-semibold", children: t.mapping }), upload.headers.map((header, index) => (_jsxs("label", { className: "grid gap-2 sm:grid-cols-2", children: [_jsx("span", { className: "break-all", children: header }), _jsxs("select", { "aria-label": header, className: selectClass, value: targets[index] ?? '', onChange: (e) => {
444
+ setTargets(targets.map((target, i) => (i === index ? e.target.value : target)));
445
+ setKeys([]);
446
+ }, children: [_jsx("option", { value: "", children: t.skip }), fields.map((f) => (_jsxs("option", { value: f.key, children: [f.label, " (", f.type, ")", f.required ? ` · ${t.required}` : ''] }, f.key)))] })] }, header))), _jsxs("fieldset", { className: "flex flex-wrap gap-3", children: [_jsx("legend", { children: t.duplicateKey }), _jsx("p", { className: "w-full text-sm text-muted-foreground", children: t.duplicateHint }), fields
447
+ .filter((f) => targets.includes(f.key))
448
+ .map((f) => (_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", checked: keys.includes(f.key), disabled: !keys.includes(f.key) && keys.length >= 5, onChange: (e) => setKeys(e.target.checked ? [...keys, f.key] : keys.filter((key) => key !== f.key)) }), f.label] }, f.key)))] }), _jsx(Button, { type: "submit", children: t.preflight })] }) })), preflight && (_jsx(JobStatus, { initial: preflight, labels: t, action: action, downloadBase: downloadBase, onComplete: setCompleted })), completed && (_jsx(ImportConfirmation, { job: completed, labels: t, pending: task.pending || confirmed, onConfirm: () => {
449
+ void task.run(async () => {
450
+ const job = await call(action, {
451
+ kind: 'confirm',
452
+ id: completed.id,
453
+ confirmed: true,
454
+ });
455
+ setConfirmed(true);
456
+ setImported(job);
457
+ });
458
+ } })), imported && (_jsx(JobStatus, { initial: imported, labels: t, action: action, downloadBase: downloadBase }))] }));
459
+ }
460
+ export function ImportConfirmation({ job, labels: t, pending, onConfirm, }) {
461
+ if (job.status !== 'SUCCEEDED' || job.result?.kind !== 'preflight')
462
+ return null;
463
+ return (_jsxs("div", { className: `${box} flex flex-col gap-3`, children: [_jsx("p", { children: t.confirmHint }), _jsx(Button, { type: "button", disabled: pending || !!job.result.errors?.length || !job.result.valid, onClick: onConfirm, children: t.confirmImport })] }));
464
+ }
465
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"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"}