@burdenoff/microfe-proserviceworld 2026.1014.1 → 2026.1015.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.
- package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts +8 -0
- package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts.map +1 -1
- package/dist/proserviceworld/hooks/useProServiceWorldApi.js +21 -13
- package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -1
- package/dist/proserviceworld/pages/CompliancePage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/CompliancePage.js +136 -118
- package/dist/proserviceworld/pages/CompliancePage.js.map +1 -1
- package/dist/proserviceworld/pages/ConflictsPage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/ConflictsPage.js +87 -71
- package/dist/proserviceworld/pages/ConflictsPage.js.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.js +104 -86
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/InvoicesPage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/InvoicesPage.js +122 -104
- package/dist/proserviceworld/pages/InvoicesPage.js.map +1 -1
- package/dist/proserviceworld/pages/TimePage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/TimePage.js +132 -114
- package/dist/proserviceworld/pages/TimePage.js.map +1 -1
- package/dist/proserviceworld/pages/TrustPage.d.ts.map +1 -1
- package/dist/proserviceworld/pages/TrustPage.js +226 -207
- package/dist/proserviceworld/pages/TrustPage.js.map +1 -1
- 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 {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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
|
|
9
|
+
var M = [
|
|
9
10
|
"CLEAR",
|
|
10
11
|
"POTENTIAL_CONFLICT",
|
|
11
12
|
"CONFLICT",
|
|
12
13
|
"WAIVED"
|
|
13
|
-
],
|
|
14
|
-
let [n, r] =
|
|
15
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
22
|
-
actions: /* @__PURE__ */
|
|
22
|
+
icon: /* @__PURE__ */ k(T, { className: "h-6 w-6" }),
|
|
23
|
+
actions: /* @__PURE__ */ A(j, {
|
|
23
24
|
onClick: () => r(!0),
|
|
24
|
-
children: [/* @__PURE__ */ E
|
|
25
|
+
children: [/* @__PURE__ */ k(E, { className: "mr-1.5 h-4 w-4" }), "Run check"]
|
|
25
26
|
})
|
|
26
27
|
}),
|
|
27
|
-
u && /* @__PURE__ */
|
|
28
|
+
u && /* @__PURE__ */ k(i, {
|
|
28
29
|
tone: "success",
|
|
29
30
|
onClose: () => g(null),
|
|
30
31
|
children: u
|
|
31
32
|
}),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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__ */
|
|
39
|
-
action: /* @__PURE__ */
|
|
54
|
+
icon: /* @__PURE__ */ k(T, { className: "h-8 w-8" }),
|
|
55
|
+
action: /* @__PURE__ */ A(j, {
|
|
40
56
|
onClick: () => r(!0),
|
|
41
|
-
children: [/* @__PURE__ */ E
|
|
57
|
+
children: [/* @__PURE__ */ k(E, { className: "mr-1.5 h-4 w-4" }), "Run check"]
|
|
42
58
|
})
|
|
43
|
-
}) : /* @__PURE__ */
|
|
44
|
-
title: `${
|
|
45
|
-
children: /* @__PURE__ */
|
|
46
|
-
/* @__PURE__ */
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
/* @__PURE__ */
|
|
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__ */
|
|
70
|
+
] }) }), /* @__PURE__ */ k("tbody", { children: z.map((e) => /* @__PURE__ */ A("tr", {
|
|
55
71
|
className: "hover:bg-bg-sunken/50",
|
|
56
72
|
children: [
|
|
57
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ k(h, { children: /* @__PURE__ */ k("span", {
|
|
58
74
|
className: "font-medium text-text-primary",
|
|
59
|
-
children:
|
|
75
|
+
children: V.get(e.clientId) ?? "—"
|
|
60
76
|
}) }),
|
|
61
|
-
/* @__PURE__ */
|
|
77
|
+
/* @__PURE__ */ k(h, {
|
|
62
78
|
className: "max-w-xs truncate",
|
|
63
79
|
children: e.searchedParties.join(", ") || "—"
|
|
64
80
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
98
|
+
n && /* @__PURE__ */ k(P, {
|
|
83
99
|
onClose: () => r(!1),
|
|
84
100
|
onDone: () => {
|
|
85
|
-
|
|
101
|
+
L(), g("Conflict check recorded.");
|
|
86
102
|
}
|
|
87
103
|
}),
|
|
88
|
-
s && /* @__PURE__ */
|
|
104
|
+
s && /* @__PURE__ */ k(F, {
|
|
89
105
|
id: s.id,
|
|
90
106
|
onClose: () => l(null),
|
|
91
107
|
onDone: () => {
|
|
92
|
-
|
|
108
|
+
L(), g("Conflict check resolved.");
|
|
93
109
|
}
|
|
94
110
|
})
|
|
95
111
|
]
|
|
96
112
|
});
|
|
97
|
-
},
|
|
98
|
-
let a = n(), o = e({ pagination: { limit: 100 } }), [c, d] =
|
|
99
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
143
|
+
children: /* @__PURE__ */ A("div", {
|
|
128
144
|
className: "space-y-3",
|
|
129
145
|
children: [
|
|
130
|
-
v && /* @__PURE__ */
|
|
146
|
+
v && /* @__PURE__ */ k(i, {
|
|
131
147
|
tone: "danger",
|
|
132
148
|
children: v
|
|
133
149
|
}),
|
|
134
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ k(s, {
|
|
135
151
|
label: "Client",
|
|
136
152
|
required: !0,
|
|
137
|
-
children: /* @__PURE__ */
|
|
153
|
+
children: /* @__PURE__ */ A(u, {
|
|
138
154
|
value: c,
|
|
139
155
|
onChange: (e) => d(e.target.value),
|
|
140
|
-
children: [/* @__PURE__ */
|
|
156
|
+
children: [/* @__PURE__ */ k("option", {
|
|
141
157
|
value: "",
|
|
142
158
|
children: "Select…"
|
|
143
|
-
}), o.data?.items.map((e) => /* @__PURE__ */
|
|
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__ */
|
|
165
|
+
/* @__PURE__ */ k(s, {
|
|
150
166
|
label: "Parties searched",
|
|
151
167
|
required: !0,
|
|
152
168
|
hint: "Comma-separated.",
|
|
153
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
175
|
+
/* @__PURE__ */ k(s, {
|
|
160
176
|
label: "Findings",
|
|
161
|
-
children: /* @__PURE__ */
|
|
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
|
-
},
|
|
170
|
-
let a = r(), [o, c] =
|
|
171
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
211
|
+
children: /* @__PURE__ */ A("div", {
|
|
196
212
|
className: "space-y-3",
|
|
197
213
|
children: [
|
|
198
|
-
h && /* @__PURE__ */
|
|
214
|
+
h && /* @__PURE__ */ k(i, {
|
|
199
215
|
tone: "danger",
|
|
200
216
|
children: h
|
|
201
217
|
}),
|
|
202
|
-
/* @__PURE__ */
|
|
218
|
+
/* @__PURE__ */ k(s, {
|
|
203
219
|
label: "Outcome",
|
|
204
|
-
children: /* @__PURE__ */
|
|
220
|
+
children: /* @__PURE__ */ k(u, {
|
|
205
221
|
value: o,
|
|
206
222
|
onChange: (e) => c(e.target.value),
|
|
207
|
-
children:
|
|
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__ */
|
|
229
|
+
/* @__PURE__ */ k(s, {
|
|
214
230
|
label: "Findings",
|
|
215
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
236
|
+
o === "WAIVED" && /* @__PURE__ */ k(s, {
|
|
221
237
|
label: "Waiver reason",
|
|
222
|
-
children: /* @__PURE__ */
|
|
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 {
|
|
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":";;;;;;;;AAgCA,IAAM,IAA6C;CACjD;CACA;CACA;CACA;AACF,GAEa,UAA0B;CACrC,IAAM,CAAC,GAAU,KAAe,EAAS,EAAK,GACxC,CAAC,GAAW,KAAgB,EAAgC,IAAI,GAChE,CAAC,GAAQ,KAAa,EAAwB,IAAI,GAClD,CAAC,GAAQ,KAAa,EAAS,EAAE,GAEjC,EAAE,SAAM,cAAW,UAAO,eAAY,EAAkB,EAC5D,QAFqB,EAAiB,CAE9B,CAAA,CAAe,KAAK,KAAK,KAAA,EACnC,CAAC,GACK,EAAE,gBAAa,EAAa,GAC5B,IAAS,GAAM,SAAS,CAAC,GACzB,IAAU,EAAW,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,GACnD,IAAa,QACX,IAAI,KAAK,EAAQ,MAAM,SAAS,CAAC,EAAA,CAAG,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GACpE,CAAC,EAAQ,IAAI,CACf;CAEA,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,OAAM;IACN,UAAS;IACT,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;IACtC,SACE,kBAAC,GAAD;KAAQ,eAAe,EAAY,EAAI;eAAvC,CACE,kBAAC,GAAD,EAAM,WAAU,iBAAkB,CAAA,GAAC,WAE7B;;GAEX,CAAA;GAEA,KACC,kBAAC,GAAD;IAAQ,MAAK;IAAU,eAAe,EAAU,IAAI;cACjD;GACK,CAAA;GAGV,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,0FAA2F,CAAA,GAC7G,kBAAC,GAAD;KACE,aAAY;KACZ,OAAO;KACP,WAAW,MAAM,EAAU,EAAE,OAAO,KAAK;KACzC,YAAY,MAAM;MAChB,AAAI,EAAE,QAAQ,WAAW,EAAO,KAAK,KACnC,EAAS,wBAAwB;OAC/B,YAAY;OACZ,aAAa,EAAO,KAAK,CAAC,CAAC;MAC7B,CAAC;KAEL;KACA,WAAU;IACX,CAAA,CACE;;GAEJ,IACC,kBAAC,GAAD,CAAe,CAAA,IACb,IACF,kBAAC,GAAD;IAAmB;IAAO,eAAe,KAAK,EAAQ;GAAI,CAAA,IACxD,EAAO,WAAW,IACpB,kBAAC,GAAD;IACE,OAAM;IACN,aAAY;IACZ,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;IACtC,QACE,kBAAC,GAAD;KAAQ,eAAe,EAAY,EAAI;eAAvC,CACE,kBAAC,GAAD,EAAM,WAAU,iBAAkB,CAAA,GAAC,WAE7B;;GAEX,CAAA,IAED,kBAAC,GAAD;IAAa,OAAO,GAAG,EAAO,OAAO,QAAQ,EAAO,WAAW,IAAI,KAAK;cACtE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD,EAAA,UAAA;KACE,kBAAC,GAAD,EAAA,UAAI,SAAU,CAAA;KACd,kBAAC,GAAD,EAAA,UAAI,mBAAoB,CAAA;KACxB,kBAAC,GAAD,EAAA,UAAI,MAAO,CAAA;KACX,kBAAC,GAAD,EAAA,UAAI,SAAU,CAAA;KACd,kBAAC,GAAD;MAAI,WAAU;gBAAa;KAAW,CAAA;IACpC,EAAA,CAAA,EACC,CAAA,GACP,kBAAC,SAAD,EAAA,UACG,EAAO,KAAK,MACX,kBAAC,MAAD;KAAe,WAAU;eAAzB;MACE,kBAAC,GAAD,EAAA,UACE,kBAAC,QAAD;OAAM,WAAU;iBACb,EAAW,IAAI,EAAE,QAAQ,KAAK;MAC3B,CAAA,EACJ,CAAA;MACJ,kBAAC,GAAD;OAAI,WAAU;iBAAqB,EAAE,gBAAgB,KAAK,IAAI,KAAK;MAAQ,CAAA;MAC3E,kBAAC,GAAD,EAAA,UAAK,EAAQ,EAAE,SAAS,EAAM,CAAA;MAC9B,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAY,QAAQ,EAAE,OAAS,CAAA,EAC7B,CAAA;MACJ,kBAAC,GAAD;OAAI,WAAU;iBACX,EAAE,WAAW,aAAa,EAAE,WAAW,uBACtC,kBAAC,GAAD;QAAQ,SAAQ;QAAQ,MAAK;QAAK,eAAe,EAAa,EAAE,IAAI,EAAE,GAAG,CAAC;kBAAG;OAErE,CAAA,IAER,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAE,aAAa,EAAQ,EAAE,UAAU,IAAI;OACpC,CAAA;MAEN,CAAA;KACF;OAtBK,EAAE,EAsBP,CACL,EACI,CAAA,CACE,EAAA,CAAA;GACA,CAAA;GAGd,KACC,kBAAC,GAAD;IACE,eAAe,EAAY,EAAK;IAChC,cAAc;KAEZ,AADA,EAAa,GACb,EAAU,0BAA0B;IACtC;GACD,CAAA;GAEF,KACC,kBAAC,GAAD;IACE,IAAI,EAAU;IACd,eAAe,EAAa,IAAI;IAChC,cAAc;KAEZ,AADA,EAAa,GACb,EAAU,0BAA0B;IACtC;GACD,CAAA;EAEA;;AAET,GAEM,KAAkE,EAAE,YAAS,gBAAa;CAC9F,IAAM,IAAS,EAAuB,GAChC,IAAU,EAAW,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,GACnD,CAAC,GAAU,KAAe,EAAS,EAAE,GACrC,CAAC,GAAS,KAAc,EAAS,EAAE,GACnC,CAAC,GAAU,KAAe,EAAS,EAAE,GACrC,CAAC,GAAK,KAAU,EAAwB,IAAI;CAoBlD,OACE,kBAAC,GAAD;EACE,MAAA;EACS;EACT,OAAM;EACN,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAQ;GAAU,SAAS;GAAS,UAAU,EAAO;aAAW;EAEhE,CAAA,GACR,kBAAC,GAAD;GAAQ,eA7BK;IAEnB,IADA,EAAO,IAAI,GACP,CAAC,GAAU,OAAO,EAAO,kBAAkB;IAC/C,IAAM,IAAkB,EACrB,MAAM,GAAG,CAAC,CACV,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CACpB,OAAO,OAAO;IACjB,IAAI,EAAgB,WAAW,GAAG,OAAO,EAAO,yBAAyB;IACzE,EAAO,OACL;KAAE;KAAU;KAAiB,UAAU,EAAS,KAAK,KAAK;IAAK,GAC/D;KACE,iBAAiB;MAEf,AADA,EAAO,GACP,EAAQ;KACV;KACA,UAAU,MAAM,EAAO,aAAa,QAAQ,EAAE,UAAU,SAAS;IACnE,CACF;GACF;GAWiC,UAAU,EAAO;aACvC,EAAO,YAAY,aAAa;EAC3B,CAAA,CACR,EAAA,CAAA;YAGJ,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG,KAAO,kBAAC,GAAD;KAAQ,MAAK;eAAU;IAAY,CAAA;IAC3C,kBAAC,GAAD;KAAO,OAAM;KAAS,UAAA;eACpB,kBAAC,GAAD;MAAc,OAAO;MAAU,WAAW,MAAM,EAAY,EAAE,OAAO,KAAK;gBAA1E,CACE,kBAAC,UAAD;OAAQ,OAAM;iBAAG;MAAe,CAAA,GAC/B,EAAQ,MAAM,MAAM,KAAK,MACxB,kBAAC,UAAD;OAAmB,OAAO,EAAE;iBACzB,EAAE;MACG,GAFK,EAAE,EAEP,CACT,CACW;;IACT,CAAA;IACP,kBAAC,GAAD;KAAO,OAAM;KAAmB,UAAA;KAAS,MAAK;eAC5C,kBAAC,GAAD;MACE,OAAO;MACP,WAAW,MAAM,EAAW,EAAE,OAAO,KAAK;MAC1C,aAAY;KACb,CAAA;IACI,CAAA;IACP,kBAAC,GAAD;KAAO,OAAM;eACX,kBAAC,GAAD;MAAU,OAAO;MAAU,WAAW,MAAM,EAAY,EAAE,OAAO,KAAK;KAAI,CAAA;IACrE,CAAA;GACJ;;CACA,CAAA;AAEX,GAEM,KAA6E,EACjF,OACA,YACA,gBACI;CACJ,IAAM,IAAU,EAAwB,GAClC,CAAC,GAAQ,KAAa,EAAiC,OAAO,GAC9D,CAAC,GAAU,KAAe,EAAS,EAAE,GACrC,CAAC,GAAc,KAAmB,EAAS,EAAE,GAC7C,CAAC,GAAK,KAAU,EAAwB,IAAI;CAiBlD,OACE,kBAAC,GAAD;EACE,MAAA;EACS;EACT,OAAM;EACN,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAQ,SAAQ;GAAU,SAAS;GAAS,UAAU,EAAQ;aAAW;EAEjE,CAAA,GACR,kBAAC,GAAD;GAAQ,eAzBd,EAAQ,OACN;IACE;IACA;IACA,UAAU,EAAS,KAAK,KAAK,KAAA;IAC7B,cAAc,MAAW,YAAW,EAAa,KAAK,KAAiB,KAAA;GACzE,GACA;IACE,iBAAiB;KAEf,AADA,EAAO,GACP,EAAQ;IACV;IACA,UAAU,MAAM,EAAO,aAAa,QAAQ,EAAE,UAAU,SAAS;GACnE,CACF;GAW+B,UAAU,EAAQ;aACxC,EAAQ,YAAY,YAAY;EAC3B,CAAA,CACR,EAAA,CAAA;YAGJ,kBAAC,OAAD;GAAK,WAAU;aAAf;IACG,KAAO,kBAAC,GAAD;KAAQ,MAAK;eAAU;IAAY,CAAA;IAC3C,kBAAC,GAAD;KAAO,OAAM;eACX,kBAAC,GAAD;MACE,OAAO;MACP,WAAW,MAAM,EAAU,EAAE,OAAO,KAA+B;gBAElE,EAAiB,KAAK,MACrB,kBAAC,UAAD;OAAgB,OAAO;iBACpB,EAAS,CAAC;MACL,GAFK,CAEL,CACT;KACW,CAAA;IACT,CAAA;IACP,kBAAC,GAAD;KAAO,OAAM;eACX,kBAAC,GAAD;MAAU,OAAO;MAAU,WAAW,MAAM,EAAY,EAAE,OAAO,KAAK;KAAI,CAAA;IACrE,CAAA;IACN,MAAW,YACV,kBAAC,GAAD;KAAO,OAAM;eACX,kBAAC,GAAD;MAAU,OAAO;MAAc,WAAW,MAAM,EAAgB,EAAE,OAAO,KAAK;KAAI,CAAA;IAC7E,CAAA;GAEN;;CACA,CAAA;AAEX"}
|
|
@@ -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;
|
|
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"}
|