@burdenoff/microfe-proserviceworld 2026.1014.1 → 2026.1026.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 (28) hide show
  1. package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts +17 -0
  2. package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts.map +1 -1
  3. package/dist/proserviceworld/hooks/useProServiceWorldApi.js +70 -48
  4. package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -1
  5. package/dist/proserviceworld/hooks/useTimeTimer.d.ts +24 -0
  6. package/dist/proserviceworld/hooks/useTimeTimer.d.ts.map +1 -0
  7. package/dist/proserviceworld/hooks/useTimeTimer.js +58 -0
  8. package/dist/proserviceworld/hooks/useTimeTimer.js.map +1 -0
  9. package/dist/proserviceworld/pages/CompliancePage.d.ts.map +1 -1
  10. package/dist/proserviceworld/pages/CompliancePage.js +136 -118
  11. package/dist/proserviceworld/pages/CompliancePage.js.map +1 -1
  12. package/dist/proserviceworld/pages/ConflictsPage.d.ts.map +1 -1
  13. package/dist/proserviceworld/pages/ConflictsPage.js +87 -71
  14. package/dist/proserviceworld/pages/ConflictsPage.js.map +1 -1
  15. package/dist/proserviceworld/pages/DocumentsPage.d.ts.map +1 -1
  16. package/dist/proserviceworld/pages/DocumentsPage.js +104 -86
  17. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  18. package/dist/proserviceworld/pages/InvoicesPage.d.ts.map +1 -1
  19. package/dist/proserviceworld/pages/InvoicesPage.js +122 -104
  20. package/dist/proserviceworld/pages/InvoicesPage.js.map +1 -1
  21. package/dist/proserviceworld/pages/TimePage.d.ts +7 -0
  22. package/dist/proserviceworld/pages/TimePage.d.ts.map +1 -1
  23. package/dist/proserviceworld/pages/TimePage.js +527 -189
  24. package/dist/proserviceworld/pages/TimePage.js.map +1 -1
  25. package/dist/proserviceworld/pages/TrustPage.d.ts.map +1 -1
  26. package/dist/proserviceworld/pages/TrustPage.js +226 -207
  27. package/dist/proserviceworld/pages/TrustPage.js.map +1 -1
  28. package/package.json +1 -1
@@ -1,77 +1,93 @@
1
1
  import { useClients as e, useConflictChecks as t, useCreateConflictCheck as n, useResolveConflictCheck as r } from "../hooks/useProServiceWorldApi.js";
2
2
  import { Banner as i, Empty as a, ErrorState as o, Field as s, LoadingBlock as c, Modal as l, NativeSelect as u, PageHeader as d, SectionCard as f, StatusPill as p, TableWrap as m, Td as h, TextArea as g, TextInput as _, Th as v, fmtDate as y, humanize as b } from "../components/ui.js";
3
- import { useMemo as x, useState as S } from "react";
4
- import { GitBranch as C, Plus as w } from "lucide-react";
5
- import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
6
- import { Button as O } from "@burdenoff/fe-libs/ui";
3
+ import { useAnalytics as x } from "../hooks/useAnalytics.js";
4
+ import { useDeferredValue as S, useMemo as C, useState as w } from "react";
5
+ import { GitBranch as T, Plus as E, Search as D } from "lucide-react";
6
+ import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
7
+ import { Button as j } from "@burdenoff/fe-libs/ui";
7
8
  //#region src/proserviceworld/pages/ConflictsPage.tsx
8
- var k = [
9
+ var M = [
9
10
  "CLEAR",
10
11
  "POTENTIAL_CONFLICT",
11
12
  "CONFLICT",
12
13
  "WAIVED"
13
- ], A = () => {
14
- let [n, r] = S(!1), [s, l] = S(null), [u, g] = S(null), { data: _, isLoading: b, error: T, refetch: k } = t(), A = _?.items ?? [], N = e({ pagination: { limit: 100 } }), P = x(() => new Map((N.data?.items ?? []).map((e) => [e.id, e.name])), [N.data]);
15
- return /* @__PURE__ */ D("div", {
14
+ ], N = () => {
15
+ let [n, r] = w(!1), [s, l] = w(null), [u, g] = w(null), [b, O] = w(""), { data: M, isLoading: N, error: I, refetch: L } = t({ search: S(b).trim() || void 0 }), { emitFact: R } = x(), z = M?.items ?? [], B = e({ pagination: { limit: 100 } }), V = C(() => new Map((B.data?.items ?? []).map((e) => [e.id, e.name])), [B.data]);
16
+ return /* @__PURE__ */ A("div", {
16
17
  className: "space-y-6",
17
18
  children: [
18
- /* @__PURE__ */ E(d, {
19
+ /* @__PURE__ */ k(d, {
19
20
  title: "Conflict checks",
20
21
  subtitle: "Run before accepting a client or opening a matter — searched against existing clients, matters and counterparties, with a documented result and waiver.",
21
- icon: /* @__PURE__ */ E(C, { className: "h-6 w-6" }),
22
- actions: /* @__PURE__ */ D(O, {
22
+ icon: /* @__PURE__ */ k(T, { className: "h-6 w-6" }),
23
+ actions: /* @__PURE__ */ A(j, {
23
24
  onClick: () => r(!0),
24
- children: [/* @__PURE__ */ E(w, { className: "mr-1.5 h-4 w-4" }), "Run check"]
25
+ children: [/* @__PURE__ */ k(E, { className: "mr-1.5 h-4 w-4" }), "Run check"]
25
26
  })
26
27
  }),
27
- u && /* @__PURE__ */ E(i, {
28
+ u && /* @__PURE__ */ k(i, {
28
29
  tone: "success",
29
30
  onClose: () => g(null),
30
31
  children: u
31
32
  }),
32
- b ? /* @__PURE__ */ E(c, {}) : T ? /* @__PURE__ */ E(o, {
33
- error: T,
34
- onRetry: () => void k()
35
- }) : A.length === 0 ? /* @__PURE__ */ E(a, {
33
+ /* @__PURE__ */ A("div", {
34
+ className: "relative",
35
+ children: [/* @__PURE__ */ k(D, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary" }), /* @__PURE__ */ k(_, {
36
+ placeholder: "Search conflict checks…",
37
+ value: b,
38
+ onChange: (e) => O(e.target.value),
39
+ onKeyDown: (e) => {
40
+ e.key === "Enter" && b.trim() && R("psw.search.performed", {
41
+ entityType: "conflict-check",
42
+ queryLength: b.trim().length
43
+ });
44
+ },
45
+ className: "pl-9"
46
+ })]
47
+ }),
48
+ N ? /* @__PURE__ */ k(c, {}) : I ? /* @__PURE__ */ k(o, {
49
+ error: I,
50
+ onRetry: () => void L()
51
+ }) : z.length === 0 ? /* @__PURE__ */ k(a, {
36
52
  title: "No conflict checks",
37
53
  description: "Run a conflict check before taking on new work.",
38
- icon: /* @__PURE__ */ E(C, { className: "h-8 w-8" }),
39
- action: /* @__PURE__ */ D(O, {
54
+ icon: /* @__PURE__ */ k(T, { className: "h-8 w-8" }),
55
+ action: /* @__PURE__ */ A(j, {
40
56
  onClick: () => r(!0),
41
- children: [/* @__PURE__ */ E(w, { className: "mr-1.5 h-4 w-4" }), "Run check"]
57
+ children: [/* @__PURE__ */ k(E, { className: "mr-1.5 h-4 w-4" }), "Run check"]
42
58
  })
43
- }) : /* @__PURE__ */ E(f, {
44
- title: `${A.length} check${A.length === 1 ? "" : "s"}`,
45
- children: /* @__PURE__ */ D(m, { children: [/* @__PURE__ */ E("thead", { children: /* @__PURE__ */ D("tr", { children: [
46
- /* @__PURE__ */ E(v, { children: "Client" }),
47
- /* @__PURE__ */ E(v, { children: "Parties searched" }),
48
- /* @__PURE__ */ E(v, { children: "Run" }),
49
- /* @__PURE__ */ E(v, { children: "Status" }),
50
- /* @__PURE__ */ E(v, {
59
+ }) : /* @__PURE__ */ k(f, {
60
+ title: `${z.length} check${z.length === 1 ? "" : "s"}`,
61
+ children: /* @__PURE__ */ A(m, { children: [/* @__PURE__ */ k("thead", { children: /* @__PURE__ */ A("tr", { children: [
62
+ /* @__PURE__ */ k(v, { children: "Client" }),
63
+ /* @__PURE__ */ k(v, { children: "Parties searched" }),
64
+ /* @__PURE__ */ k(v, { children: "Run" }),
65
+ /* @__PURE__ */ k(v, { children: "Status" }),
66
+ /* @__PURE__ */ k(v, {
51
67
  className: "text-right",
52
68
  children: "Actions"
53
69
  })
54
- ] }) }), /* @__PURE__ */ E("tbody", { children: A.map((e) => /* @__PURE__ */ D("tr", {
70
+ ] }) }), /* @__PURE__ */ k("tbody", { children: z.map((e) => /* @__PURE__ */ A("tr", {
55
71
  className: "hover:bg-bg-sunken/50",
56
72
  children: [
57
- /* @__PURE__ */ E(h, { children: /* @__PURE__ */ E("span", {
73
+ /* @__PURE__ */ k(h, { children: /* @__PURE__ */ k("span", {
58
74
  className: "font-medium text-text-primary",
59
- children: P.get(e.clientId) ?? "—"
75
+ children: V.get(e.clientId) ?? "—"
60
76
  }) }),
61
- /* @__PURE__ */ E(h, {
77
+ /* @__PURE__ */ k(h, {
62
78
  className: "max-w-xs truncate",
63
79
  children: e.searchedParties.join(", ") || "—"
64
80
  }),
65
- /* @__PURE__ */ E(h, { children: y(e.createdAt) }),
66
- /* @__PURE__ */ E(h, { children: /* @__PURE__ */ E(p, { status: e.status }) }),
67
- /* @__PURE__ */ E(h, {
81
+ /* @__PURE__ */ k(h, { children: y(e.createdAt) }),
82
+ /* @__PURE__ */ k(h, { children: /* @__PURE__ */ k(p, { status: e.status }) }),
83
+ /* @__PURE__ */ k(h, {
68
84
  className: "text-right",
69
- children: e.status === "PENDING" || e.status === "POTENTIAL_CONFLICT" ? /* @__PURE__ */ E(O, {
85
+ children: e.status === "PENDING" || e.status === "POTENTIAL_CONFLICT" ? /* @__PURE__ */ k(j, {
70
86
  variant: "ghost",
71
87
  size: "sm",
72
88
  onClick: () => l({ id: e.id }),
73
89
  children: "Resolve"
74
- }) : /* @__PURE__ */ E("span", {
90
+ }) : /* @__PURE__ */ k("span", {
75
91
  className: "text-xs text-text-tertiary",
76
92
  children: e.resolvedAt ? y(e.resolvedAt) : ""
77
93
  })
@@ -79,33 +95,33 @@ var k = [
79
95
  ]
80
96
  }, e.id)) })] })
81
97
  }),
82
- n && /* @__PURE__ */ E(j, {
98
+ n && /* @__PURE__ */ k(P, {
83
99
  onClose: () => r(!1),
84
100
  onDone: () => {
85
- k(), g("Conflict check recorded.");
101
+ L(), g("Conflict check recorded.");
86
102
  }
87
103
  }),
88
- s && /* @__PURE__ */ E(M, {
104
+ s && /* @__PURE__ */ k(F, {
89
105
  id: s.id,
90
106
  onClose: () => l(null),
91
107
  onDone: () => {
92
- k(), g("Conflict check resolved.");
108
+ L(), g("Conflict check resolved.");
93
109
  }
94
110
  })
95
111
  ]
96
112
  });
97
- }, j = ({ onClose: t, onDone: r }) => {
98
- let a = n(), o = e({ pagination: { limit: 100 } }), [c, d] = S(""), [f, p] = S(""), [m, h] = S(""), [v, y] = S(null);
99
- return /* @__PURE__ */ E(l, {
113
+ }, P = ({ onClose: t, onDone: r }) => {
114
+ let a = n(), o = e({ pagination: { limit: 100 } }), [c, d] = w(""), [f, p] = w(""), [m, h] = w(""), [v, y] = w(null);
115
+ return /* @__PURE__ */ k(l, {
100
116
  open: !0,
101
117
  onClose: t,
102
118
  title: "Run conflict check",
103
- footer: /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(O, {
119
+ footer: /* @__PURE__ */ A(O, { children: [/* @__PURE__ */ k(j, {
104
120
  variant: "outline",
105
121
  onClick: t,
106
122
  disabled: a.isPending,
107
123
  children: "Cancel"
108
- }), /* @__PURE__ */ E(O, {
124
+ }), /* @__PURE__ */ k(j, {
109
125
  onClick: () => {
110
126
  if (y(null), !c) return y("Select a client.");
111
127
  let e = f.split(",").map((e) => e.trim()).filter(Boolean);
@@ -124,41 +140,41 @@ var k = [
124
140
  disabled: a.isPending,
125
141
  children: a.isPending ? "Running…" : "Record check"
126
142
  })] }),
127
- children: /* @__PURE__ */ D("div", {
143
+ children: /* @__PURE__ */ A("div", {
128
144
  className: "space-y-3",
129
145
  children: [
130
- v && /* @__PURE__ */ E(i, {
146
+ v && /* @__PURE__ */ k(i, {
131
147
  tone: "danger",
132
148
  children: v
133
149
  }),
134
- /* @__PURE__ */ E(s, {
150
+ /* @__PURE__ */ k(s, {
135
151
  label: "Client",
136
152
  required: !0,
137
- children: /* @__PURE__ */ D(u, {
153
+ children: /* @__PURE__ */ A(u, {
138
154
  value: c,
139
155
  onChange: (e) => d(e.target.value),
140
- children: [/* @__PURE__ */ E("option", {
156
+ children: [/* @__PURE__ */ k("option", {
141
157
  value: "",
142
158
  children: "Select…"
143
- }), o.data?.items.map((e) => /* @__PURE__ */ E("option", {
159
+ }), o.data?.items.map((e) => /* @__PURE__ */ k("option", {
144
160
  value: e.id,
145
161
  children: e.name
146
162
  }, e.id))]
147
163
  })
148
164
  }),
149
- /* @__PURE__ */ E(s, {
165
+ /* @__PURE__ */ k(s, {
150
166
  label: "Parties searched",
151
167
  required: !0,
152
168
  hint: "Comma-separated.",
153
- children: /* @__PURE__ */ E(_, {
169
+ children: /* @__PURE__ */ k(_, {
154
170
  value: f,
155
171
  onChange: (e) => p(e.target.value),
156
172
  placeholder: "Beta Corp, John Roe"
157
173
  })
158
174
  }),
159
- /* @__PURE__ */ E(s, {
175
+ /* @__PURE__ */ k(s, {
160
176
  label: "Findings",
161
- children: /* @__PURE__ */ E(g, {
177
+ children: /* @__PURE__ */ k(g, {
162
178
  value: m,
163
179
  onChange: (e) => h(e.target.value)
164
180
  })
@@ -166,18 +182,18 @@ var k = [
166
182
  ]
167
183
  })
168
184
  });
169
- }, M = ({ id: e, onClose: t, onDone: n }) => {
170
- let a = r(), [o, c] = S("CLEAR"), [d, f] = S(""), [p, m] = S(""), [h, _] = S(null);
171
- return /* @__PURE__ */ E(l, {
185
+ }, F = ({ id: e, onClose: t, onDone: n }) => {
186
+ let a = r(), [o, c] = w("CLEAR"), [d, f] = w(""), [p, m] = w(""), [h, _] = w(null);
187
+ return /* @__PURE__ */ k(l, {
172
188
  open: !0,
173
189
  onClose: t,
174
190
  title: "Resolve conflict check",
175
- footer: /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(O, {
191
+ footer: /* @__PURE__ */ A(O, { children: [/* @__PURE__ */ k(j, {
176
192
  variant: "outline",
177
193
  onClick: t,
178
194
  disabled: a.isPending,
179
195
  children: "Cancel"
180
- }), /* @__PURE__ */ E(O, {
196
+ }), /* @__PURE__ */ k(j, {
181
197
  onClick: () => a.mutate({
182
198
  id: e,
183
199
  status: o,
@@ -192,34 +208,34 @@ var k = [
192
208
  disabled: a.isPending,
193
209
  children: a.isPending ? "Saving…" : "Resolve"
194
210
  })] }),
195
- children: /* @__PURE__ */ D("div", {
211
+ children: /* @__PURE__ */ A("div", {
196
212
  className: "space-y-3",
197
213
  children: [
198
- h && /* @__PURE__ */ E(i, {
214
+ h && /* @__PURE__ */ k(i, {
199
215
  tone: "danger",
200
216
  children: h
201
217
  }),
202
- /* @__PURE__ */ E(s, {
218
+ /* @__PURE__ */ k(s, {
203
219
  label: "Outcome",
204
- children: /* @__PURE__ */ E(u, {
220
+ children: /* @__PURE__ */ k(u, {
205
221
  value: o,
206
222
  onChange: (e) => c(e.target.value),
207
- children: k.map((e) => /* @__PURE__ */ E("option", {
223
+ children: M.map((e) => /* @__PURE__ */ k("option", {
208
224
  value: e,
209
225
  children: b(e)
210
226
  }, e))
211
227
  })
212
228
  }),
213
- /* @__PURE__ */ E(s, {
229
+ /* @__PURE__ */ k(s, {
214
230
  label: "Findings",
215
- children: /* @__PURE__ */ E(g, {
231
+ children: /* @__PURE__ */ k(g, {
216
232
  value: d,
217
233
  onChange: (e) => f(e.target.value)
218
234
  })
219
235
  }),
220
- o === "WAIVED" && /* @__PURE__ */ E(s, {
236
+ o === "WAIVED" && /* @__PURE__ */ k(s, {
221
237
  label: "Waiver reason",
222
- children: /* @__PURE__ */ E(g, {
238
+ children: /* @__PURE__ */ k(g, {
223
239
  value: p,
224
240
  onChange: (e) => m(e.target.value)
225
241
  })
@@ -229,6 +245,6 @@ var k = [
229
245
  });
230
246
  };
231
247
  //#endregion
232
- export { A as ConflictsPage };
248
+ export { N as ConflictsPage };
233
249
 
234
250
  //# sourceMappingURL=ConflictsPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConflictsPage.js","names":[],"sources":["../../../src/proserviceworld/pages/ConflictsPage.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { Plus, GitBranch } from 'lucide-react';\nimport {\n useConflictChecks,\n useCreateConflictCheck,\n useResolveConflictCheck,\n useClients,\n type PswConflictCheckStatus,\n} from '../hooks/useProServiceWorldApi';\nimport {\n PageHeader,\n SectionCard,\n LoadingBlock,\n ErrorState,\n Empty,\n StatusPill,\n Modal,\n Field,\n TextInput,\n TextArea,\n NativeSelect,\n Banner,\n TableWrap,\n Th,\n Td,\n humanize,\n fmtDate,\n} from '../components/ui';\n\nconst RESOLVE_STATUSES: PswConflictCheckStatus[] = [\n 'CLEAR',\n 'POTENTIAL_CONFLICT',\n 'CONFLICT',\n 'WAIVED',\n];\n\nexport const ConflictsPage: FC = () => {\n const [creating, setCreating] = useState(false);\n const [resolving, setResolving] = useState<{ id: string } | null>(null);\n const [banner, setBanner] = useState<string | null>(null);\n const { data, isLoading, error, refetch } = useConflictChecks();\n const checks = data?.items ?? [];\n const clients = useClients({ pagination: { limit: 100 } });\n const clientName = useMemo(\n () => new Map((clients.data?.items ?? []).map((c) => [c.id, c.name])),\n [clients.data]\n );\n\n return (\n <div className=\"space-y-6\">\n <PageHeader\n title=\"Conflict checks\"\n subtitle=\"Run before accepting a client or opening a matter — searched against existing clients, matters and counterparties, with a documented result and waiver.\"\n icon={<GitBranch className=\"h-6 w-6\" />}\n actions={\n <Button onClick={() => setCreating(true)}>\n <Plus className=\"mr-1.5 h-4 w-4\" />\n Run check\n </Button>\n }\n />\n\n {banner && (\n <Banner tone=\"success\" onClose={() => setBanner(null)}>\n {banner}\n </Banner>\n )}\n\n {isLoading ? (\n <LoadingBlock />\n ) : error ? (\n <ErrorState error={error} onRetry={() => void refetch()} />\n ) : checks.length === 0 ? (\n <Empty\n title=\"No conflict checks\"\n description=\"Run a conflict check before taking on new work.\"\n icon={<GitBranch className=\"h-8 w-8\" />}\n action={\n <Button onClick={() => setCreating(true)}>\n <Plus className=\"mr-1.5 h-4 w-4\" />\n Run check\n </Button>\n }\n />\n ) : (\n <SectionCard title={`${checks.length} check${checks.length === 1 ? '' : 's'}`}>\n <TableWrap>\n <thead>\n <tr>\n <Th>Client</Th>\n <Th>Parties searched</Th>\n <Th>Run</Th>\n <Th>Status</Th>\n <Th className=\"text-right\">Actions</Th>\n </tr>\n </thead>\n <tbody>\n {checks.map((c) => (\n <tr key={c.id} className=\"hover:bg-bg-sunken/50\">\n <Td>\n <span className=\"font-medium text-text-primary\">\n {clientName.get(c.clientId) ?? '—'}\n </span>\n </Td>\n <Td className=\"max-w-xs truncate\">{c.searchedParties.join(', ') || '—'}</Td>\n <Td>{fmtDate(c.createdAt)}</Td>\n <Td>\n <StatusPill status={c.status} />\n </Td>\n <Td className=\"text-right\">\n {c.status === 'PENDING' || c.status === 'POTENTIAL_CONFLICT' ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setResolving({ id: c.id })}>\n Resolve\n </Button>\n ) : (\n <span className=\"text-xs text-text-tertiary\">\n {c.resolvedAt ? fmtDate(c.resolvedAt) : ''}\n </span>\n )}\n </Td>\n </tr>\n ))}\n </tbody>\n </TableWrap>\n </SectionCard>\n )}\n\n {creating && (\n <ConflictModal\n onClose={() => setCreating(false)}\n onDone={() => {\n void refetch();\n setBanner('Conflict check recorded.');\n }}\n />\n )}\n {resolving && (\n <ResolveModal\n id={resolving.id}\n onClose={() => setResolving(null)}\n onDone={() => {\n void refetch();\n setBanner('Conflict check resolved.');\n }}\n />\n )}\n </div>\n );\n};\n\nconst ConflictModal: FC<{ onClose: () => void; onDone: () => void }> = ({ onClose, onDone }) => {\n const create = useCreateConflictCheck();\n const clients = useClients({ pagination: { limit: 100 } });\n const [clientId, setClientId] = useState('');\n const [parties, setParties] = useState('');\n const [findings, setFindings] = useState('');\n const [err, setErr] = useState<string | null>(null);\n const submit = () => {\n setErr(null);\n if (!clientId) return setErr('Select a client.');\n const searchedParties = parties\n .split(',')\n .map((p) => p.trim())\n .filter(Boolean);\n if (searchedParties.length === 0) return setErr('Add at least one party.');\n create.mutate(\n { clientId, searchedParties, findings: findings.trim() || null },\n {\n onSuccess: () => {\n onDone();\n onClose();\n },\n onError: (e) => setErr(e instanceof Error ? e.message : 'Failed.'),\n }\n );\n };\n return (\n <Modal\n open\n onClose={onClose}\n title=\"Run conflict check\"\n footer={\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={create.isPending}>\n Cancel\n </Button>\n <Button onClick={submit} disabled={create.isPending}>\n {create.isPending ? 'Running…' : 'Record check'}\n </Button>\n </>\n }\n >\n <div className=\"space-y-3\">\n {err && <Banner tone=\"danger\">{err}</Banner>}\n <Field label=\"Client\" required>\n <NativeSelect value={clientId} onChange={(e) => setClientId(e.target.value)}>\n <option value=\"\">Select…</option>\n {clients.data?.items.map((c) => (\n <option key={c.id} value={c.id}>\n {c.name}\n </option>\n ))}\n </NativeSelect>\n </Field>\n <Field label=\"Parties searched\" required hint=\"Comma-separated.\">\n <TextInput\n value={parties}\n onChange={(e) => setParties(e.target.value)}\n placeholder=\"Beta Corp, John Roe\"\n />\n </Field>\n <Field label=\"Findings\">\n <TextArea value={findings} onChange={(e) => setFindings(e.target.value)} />\n </Field>\n </div>\n </Modal>\n );\n};\n\nconst ResolveModal: FC<{ id: string; onClose: () => void; onDone: () => void }> = ({\n id,\n onClose,\n onDone,\n}) => {\n const resolve = useResolveConflictCheck();\n const [status, setStatus] = useState<PswConflictCheckStatus>('CLEAR');\n const [findings, setFindings] = useState('');\n const [waiverReason, setWaiverReason] = useState('');\n const [err, setErr] = useState<string | null>(null);\n const submit = () =>\n resolve.mutate(\n {\n id,\n status,\n findings: findings.trim() || undefined,\n waiverReason: status === 'WAIVED' ? waiverReason.trim() || undefined : undefined,\n },\n {\n onSuccess: () => {\n onDone();\n onClose();\n },\n onError: (e) => setErr(e instanceof Error ? e.message : 'Failed.'),\n }\n );\n return (\n <Modal\n open\n onClose={onClose}\n title=\"Resolve conflict check\"\n footer={\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={resolve.isPending}>\n Cancel\n </Button>\n <Button onClick={submit} disabled={resolve.isPending}>\n {resolve.isPending ? 'Saving…' : 'Resolve'}\n </Button>\n </>\n }\n >\n <div className=\"space-y-3\">\n {err && <Banner tone=\"danger\">{err}</Banner>}\n <Field label=\"Outcome\">\n <NativeSelect\n value={status}\n onChange={(e) => setStatus(e.target.value as PswConflictCheckStatus)}\n >\n {RESOLVE_STATUSES.map((s) => (\n <option key={s} value={s}>\n {humanize(s)}\n </option>\n ))}\n </NativeSelect>\n </Field>\n <Field label=\"Findings\">\n <TextArea value={findings} onChange={(e) => setFindings(e.target.value)} />\n </Field>\n {status === 'WAIVED' && (\n <Field label=\"Waiver reason\">\n <TextArea value={waiverReason} onChange={(e) => setWaiverReason(e.target.value)} />\n </Field>\n )}\n </div>\n </Modal>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConflictsPage.js","names":[],"sources":["../../../src/proserviceworld/pages/ConflictsPage.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useDeferredValue, useMemo, useState } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { Plus, GitBranch, Search } from 'lucide-react';\nimport {\n useConflictChecks,\n useCreateConflictCheck,\n useResolveConflictCheck,\n useClients,\n type PswConflictCheckStatus,\n} from '../hooks/useProServiceWorldApi';\nimport {\n PageHeader,\n SectionCard,\n LoadingBlock,\n ErrorState,\n Empty,\n StatusPill,\n Modal,\n Field,\n TextInput,\n TextArea,\n NativeSelect,\n Banner,\n TableWrap,\n Th,\n Td,\n humanize,\n fmtDate,\n} from '../components/ui';\nimport { useAnalytics } from '../hooks/useAnalytics';\n\nconst RESOLVE_STATUSES: PswConflictCheckStatus[] = [\n 'CLEAR',\n 'POTENTIAL_CONFLICT',\n 'CONFLICT',\n 'WAIVED',\n];\n\nexport const ConflictsPage: FC = () => {\n const [creating, setCreating] = useState(false);\n const [resolving, setResolving] = useState<{ id: string } | null>(null);\n const [banner, setBanner] = useState<string | null>(null);\n const [search, setSearch] = useState('');\n const deferredSearch = useDeferredValue(search);\n const { data, isLoading, error, refetch } = useConflictChecks({\n search: deferredSearch.trim() || undefined,\n });\n const { emitFact } = useAnalytics();\n const checks = data?.items ?? [];\n const clients = useClients({ pagination: { limit: 100 } });\n const clientName = useMemo(\n () => new Map((clients.data?.items ?? []).map((c) => [c.id, c.name])),\n [clients.data]\n );\n\n return (\n <div className=\"space-y-6\">\n <PageHeader\n title=\"Conflict checks\"\n subtitle=\"Run before accepting a client or opening a matter — searched against existing clients, matters and counterparties, with a documented result and waiver.\"\n icon={<GitBranch className=\"h-6 w-6\" />}\n actions={\n <Button onClick={() => setCreating(true)}>\n <Plus className=\"mr-1.5 h-4 w-4\" />\n Run check\n </Button>\n }\n />\n\n {banner && (\n <Banner tone=\"success\" onClose={() => setBanner(null)}>\n {banner}\n </Banner>\n )}\n\n <div className=\"relative\">\n <Search className=\"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary\" />\n <TextInput\n placeholder=\"Search conflict checks…\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && search.trim()) {\n emitFact('psw.search.performed', {\n entityType: 'conflict-check',\n queryLength: search.trim().length,\n });\n }\n }}\n className=\"pl-9\"\n />\n </div>\n\n {isLoading ? (\n <LoadingBlock />\n ) : error ? (\n <ErrorState error={error} onRetry={() => void refetch()} />\n ) : checks.length === 0 ? (\n <Empty\n title=\"No conflict checks\"\n description=\"Run a conflict check before taking on new work.\"\n icon={<GitBranch className=\"h-8 w-8\" />}\n action={\n <Button onClick={() => setCreating(true)}>\n <Plus className=\"mr-1.5 h-4 w-4\" />\n Run check\n </Button>\n }\n />\n ) : (\n <SectionCard title={`${checks.length} check${checks.length === 1 ? '' : 's'}`}>\n <TableWrap>\n <thead>\n <tr>\n <Th>Client</Th>\n <Th>Parties searched</Th>\n <Th>Run</Th>\n <Th>Status</Th>\n <Th className=\"text-right\">Actions</Th>\n </tr>\n </thead>\n <tbody>\n {checks.map((c) => (\n <tr key={c.id} className=\"hover:bg-bg-sunken/50\">\n <Td>\n <span className=\"font-medium text-text-primary\">\n {clientName.get(c.clientId) ?? '—'}\n </span>\n </Td>\n <Td className=\"max-w-xs truncate\">{c.searchedParties.join(', ') || '—'}</Td>\n <Td>{fmtDate(c.createdAt)}</Td>\n <Td>\n <StatusPill status={c.status} />\n </Td>\n <Td className=\"text-right\">\n {c.status === 'PENDING' || c.status === 'POTENTIAL_CONFLICT' ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setResolving({ id: c.id })}>\n Resolve\n </Button>\n ) : (\n <span className=\"text-xs text-text-tertiary\">\n {c.resolvedAt ? fmtDate(c.resolvedAt) : ''}\n </span>\n )}\n </Td>\n </tr>\n ))}\n </tbody>\n </TableWrap>\n </SectionCard>\n )}\n\n {creating && (\n <ConflictModal\n onClose={() => setCreating(false)}\n onDone={() => {\n void refetch();\n setBanner('Conflict check recorded.');\n }}\n />\n )}\n {resolving && (\n <ResolveModal\n id={resolving.id}\n onClose={() => setResolving(null)}\n onDone={() => {\n void refetch();\n setBanner('Conflict check resolved.');\n }}\n />\n )}\n </div>\n );\n};\n\nconst ConflictModal: FC<{ onClose: () => void; onDone: () => void }> = ({ onClose, onDone }) => {\n const create = useCreateConflictCheck();\n const clients = useClients({ pagination: { limit: 100 } });\n const [clientId, setClientId] = useState('');\n const [parties, setParties] = useState('');\n const [findings, setFindings] = useState('');\n const [err, setErr] = useState<string | null>(null);\n const submit = () => {\n setErr(null);\n if (!clientId) return setErr('Select a client.');\n const searchedParties = parties\n .split(',')\n .map((p) => p.trim())\n .filter(Boolean);\n if (searchedParties.length === 0) return setErr('Add at least one party.');\n create.mutate(\n { clientId, searchedParties, findings: findings.trim() || null },\n {\n onSuccess: () => {\n onDone();\n onClose();\n },\n onError: (e) => setErr(e instanceof Error ? e.message : 'Failed.'),\n }\n );\n };\n return (\n <Modal\n open\n onClose={onClose}\n title=\"Run conflict check\"\n footer={\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={create.isPending}>\n Cancel\n </Button>\n <Button onClick={submit} disabled={create.isPending}>\n {create.isPending ? 'Running…' : 'Record check'}\n </Button>\n </>\n }\n >\n <div className=\"space-y-3\">\n {err && <Banner tone=\"danger\">{err}</Banner>}\n <Field label=\"Client\" required>\n <NativeSelect value={clientId} onChange={(e) => setClientId(e.target.value)}>\n <option value=\"\">Select…</option>\n {clients.data?.items.map((c) => (\n <option key={c.id} value={c.id}>\n {c.name}\n </option>\n ))}\n </NativeSelect>\n </Field>\n <Field label=\"Parties searched\" required hint=\"Comma-separated.\">\n <TextInput\n value={parties}\n onChange={(e) => setParties(e.target.value)}\n placeholder=\"Beta Corp, John Roe\"\n />\n </Field>\n <Field label=\"Findings\">\n <TextArea value={findings} onChange={(e) => setFindings(e.target.value)} />\n </Field>\n </div>\n </Modal>\n );\n};\n\nconst ResolveModal: FC<{ id: string; onClose: () => void; onDone: () => void }> = ({\n id,\n onClose,\n onDone,\n}) => {\n const resolve = useResolveConflictCheck();\n const [status, setStatus] = useState<PswConflictCheckStatus>('CLEAR');\n const [findings, setFindings] = useState('');\n const [waiverReason, setWaiverReason] = useState('');\n const [err, setErr] = useState<string | null>(null);\n const submit = () =>\n resolve.mutate(\n {\n id,\n status,\n findings: findings.trim() || undefined,\n waiverReason: status === 'WAIVED' ? waiverReason.trim() || undefined : undefined,\n },\n {\n onSuccess: () => {\n onDone();\n onClose();\n },\n onError: (e) => setErr(e instanceof Error ? e.message : 'Failed.'),\n }\n );\n return (\n <Modal\n open\n onClose={onClose}\n title=\"Resolve conflict check\"\n footer={\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={resolve.isPending}>\n Cancel\n </Button>\n <Button onClick={submit} disabled={resolve.isPending}>\n {resolve.isPending ? 'Saving…' : 'Resolve'}\n </Button>\n </>\n }\n >\n <div className=\"space-y-3\">\n {err && <Banner tone=\"danger\">{err}</Banner>}\n <Field label=\"Outcome\">\n <NativeSelect\n value={status}\n onChange={(e) => setStatus(e.target.value as PswConflictCheckStatus)}\n >\n {RESOLVE_STATUSES.map((s) => (\n <option key={s} value={s}>\n {humanize(s)}\n </option>\n ))}\n </NativeSelect>\n </Field>\n <Field label=\"Findings\">\n <TextArea value={findings} onChange={(e) => setFindings(e.target.value)} />\n </Field>\n {status === 'WAIVED' && (\n <Field label=\"Waiver reason\">\n <TextArea value={waiverReason} onChange={(e) => setWaiverReason(e.target.value)} />\n </Field>\n )}\n </div>\n </Modal>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentsPage.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/pages/DocumentsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAkChC,eAAO,MAAM,aAAa,EAAE,EAwJ3B,CAAC"}
1
+ {"version":3,"file":"DocumentsPage.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/pages/DocumentsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAmChC,eAAO,MAAM,aAAa,EAAE,EA6K3B,CAAC"}