@burdenoff/microfe-proserviceworld 2026.1028.1 → 2026.1031.2

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 (109) hide show
  1. package/dist/generated/global-types.d.ts +9699 -583
  2. package/dist/generated/global-types.d.ts.map +1 -1
  3. package/dist/generated/wspace-types.d.ts +18076 -2999
  4. package/dist/generated/wspace-types.d.ts.map +1 -1
  5. package/dist/proserviceworld/__tests__/schemaStub.d.ts +20 -0
  6. package/dist/proserviceworld/__tests__/schemaStub.d.ts.map +1 -0
  7. package/dist/proserviceworld/components/CredentialDirectory.js +44 -43
  8. package/dist/proserviceworld/components/CredentialDirectory.js.map +1 -1
  9. package/dist/proserviceworld/components/CredentialReminderPanel.js +5 -4
  10. package/dist/proserviceworld/components/CredentialReminderPanel.js.map +1 -1
  11. package/dist/proserviceworld/components/ui.d.ts +7 -3
  12. package/dist/proserviceworld/components/ui.d.ts.map +1 -1
  13. package/dist/proserviceworld/components/ui.js +135 -121
  14. package/dist/proserviceworld/components/ui.js.map +1 -1
  15. package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts.map +1 -1
  16. package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -1
  17. package/dist/proserviceworld/hooks/useTr.d.ts +49 -8
  18. package/dist/proserviceworld/hooks/useTr.d.ts.map +1 -1
  19. package/dist/proserviceworld/hooks/useTr.js +45 -21
  20. package/dist/proserviceworld/hooks/useTr.js.map +1 -1
  21. package/dist/proserviceworld/i18n/catalog/analytics.d.ts +5 -0
  22. package/dist/proserviceworld/i18n/catalog/analytics.d.ts.map +1 -0
  23. package/dist/proserviceworld/i18n/catalog/analytics.js +271 -0
  24. package/dist/proserviceworld/i18n/catalog/analytics.js.map +1 -0
  25. package/dist/proserviceworld/i18n/catalog/common.d.ts +9 -0
  26. package/dist/proserviceworld/i18n/catalog/common.d.ts.map +1 -0
  27. package/dist/proserviceworld/i18n/catalog/common.js +163 -0
  28. package/dist/proserviceworld/i18n/catalog/common.js.map +1 -0
  29. package/dist/proserviceworld/i18n/catalog/compliance.d.ts +5 -0
  30. package/dist/proserviceworld/i18n/catalog/compliance.d.ts.map +1 -0
  31. package/dist/proserviceworld/i18n/catalog/compliance.js +157 -0
  32. package/dist/proserviceworld/i18n/catalog/compliance.js.map +1 -0
  33. package/dist/proserviceworld/i18n/catalog/conflicts.d.ts +5 -0
  34. package/dist/proserviceworld/i18n/catalog/conflicts.d.ts.map +1 -0
  35. package/dist/proserviceworld/i18n/catalog/conflicts.js +145 -0
  36. package/dist/proserviceworld/i18n/catalog/conflicts.js.map +1 -0
  37. package/dist/proserviceworld/i18n/catalog/documents.d.ts +5 -0
  38. package/dist/proserviceworld/i18n/catalog/documents.d.ts.map +1 -0
  39. package/dist/proserviceworld/i18n/catalog/documents.js +157 -0
  40. package/dist/proserviceworld/i18n/catalog/documents.js.map +1 -0
  41. package/dist/proserviceworld/i18n/catalog/enums.d.ts +10 -0
  42. package/dist/proserviceworld/i18n/catalog/enums.d.ts.map +1 -0
  43. package/dist/proserviceworld/i18n/catalog/enums.js +481 -0
  44. package/dist/proserviceworld/i18n/catalog/enums.js.map +1 -0
  45. package/dist/proserviceworld/i18n/catalog/index.d.ts +9 -0
  46. package/dist/proserviceworld/i18n/catalog/index.d.ts.map +1 -0
  47. package/dist/proserviceworld/i18n/catalog/index.js +25 -0
  48. package/dist/proserviceworld/i18n/catalog/index.js.map +1 -0
  49. package/dist/proserviceworld/i18n/catalog/invoices.d.ts +5 -0
  50. package/dist/proserviceworld/i18n/catalog/invoices.d.ts.map +1 -0
  51. package/dist/proserviceworld/i18n/catalog/invoices.js +247 -0
  52. package/dist/proserviceworld/i18n/catalog/invoices.js.map +1 -0
  53. package/dist/proserviceworld/i18n/catalog/practiceAreas.d.ts +5 -0
  54. package/dist/proserviceworld/i18n/catalog/practiceAreas.d.ts.map +1 -0
  55. package/dist/proserviceworld/i18n/catalog/practiceAreas.js +97 -0
  56. package/dist/proserviceworld/i18n/catalog/practiceAreas.js.map +1 -0
  57. package/dist/proserviceworld/i18n/catalog/time.d.ts +5 -0
  58. package/dist/proserviceworld/i18n/catalog/time.d.ts.map +1 -0
  59. package/dist/proserviceworld/i18n/catalog/time.js +301 -0
  60. package/dist/proserviceworld/i18n/catalog/time.js.map +1 -0
  61. package/dist/proserviceworld/i18n/index.d.ts +10 -9
  62. package/dist/proserviceworld/i18n/index.d.ts.map +1 -1
  63. package/dist/proserviceworld/i18n/index.js +16 -12
  64. package/dist/proserviceworld/i18n/index.js.map +1 -1
  65. package/dist/proserviceworld/i18n/types.d.ts +13 -0
  66. package/dist/proserviceworld/i18n/types.d.ts.map +1 -0
  67. package/dist/proserviceworld/i18n/types.js +18 -0
  68. package/dist/proserviceworld/i18n/types.js.map +1 -0
  69. package/dist/proserviceworld/pages/AnalyticsPage.d.ts.map +1 -1
  70. package/dist/proserviceworld/pages/AnalyticsPage.js +209 -197
  71. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  72. package/dist/proserviceworld/pages/ClientDetailPage.js +99 -98
  73. package/dist/proserviceworld/pages/ClientDetailPage.js.map +1 -1
  74. package/dist/proserviceworld/pages/ClientsPage.d.ts.map +1 -1
  75. package/dist/proserviceworld/pages/ClientsPage.js +181 -181
  76. package/dist/proserviceworld/pages/ClientsPage.js.map +1 -1
  77. package/dist/proserviceworld/pages/CompliancePage.d.ts.map +1 -1
  78. package/dist/proserviceworld/pages/CompliancePage.js +210 -209
  79. package/dist/proserviceworld/pages/CompliancePage.js.map +1 -1
  80. package/dist/proserviceworld/pages/ConflictsPage.d.ts.map +1 -1
  81. package/dist/proserviceworld/pages/ConflictsPage.js +139 -138
  82. package/dist/proserviceworld/pages/ConflictsPage.js.map +1 -1
  83. package/dist/proserviceworld/pages/DocumentsPage.d.ts.map +1 -1
  84. package/dist/proserviceworld/pages/DocumentsPage.js +150 -149
  85. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  86. package/dist/proserviceworld/pages/EngagementDetailPage.js +105 -104
  87. package/dist/proserviceworld/pages/EngagementDetailPage.js.map +1 -1
  88. package/dist/proserviceworld/pages/EngagementsPage.d.ts.map +1 -1
  89. package/dist/proserviceworld/pages/EngagementsPage.js +137 -137
  90. package/dist/proserviceworld/pages/EngagementsPage.js.map +1 -1
  91. package/dist/proserviceworld/pages/InvoicesPage.d.ts.map +1 -1
  92. package/dist/proserviceworld/pages/InvoicesPage.js +257 -256
  93. package/dist/proserviceworld/pages/InvoicesPage.js.map +1 -1
  94. package/dist/proserviceworld/pages/MattersPage.d.ts.map +1 -1
  95. package/dist/proserviceworld/pages/MattersPage.js +166 -166
  96. package/dist/proserviceworld/pages/MattersPage.js.map +1 -1
  97. package/dist/proserviceworld/pages/PracticeAreasPage.d.ts.map +1 -1
  98. package/dist/proserviceworld/pages/PracticeAreasPage.js +100 -99
  99. package/dist/proserviceworld/pages/PracticeAreasPage.js.map +1 -1
  100. package/dist/proserviceworld/pages/PractitionerCredentialsPage.js +30 -29
  101. package/dist/proserviceworld/pages/PractitionerCredentialsPage.js.map +1 -1
  102. package/dist/proserviceworld/pages/TimePage.d.ts.map +1 -1
  103. package/dist/proserviceworld/pages/TimePage.js +343 -350
  104. package/dist/proserviceworld/pages/TimePage.js.map +1 -1
  105. package/dist/proserviceworld/utils/humanize.d.ts +3 -0
  106. package/dist/proserviceworld/utils/humanize.d.ts.map +1 -0
  107. package/dist/proserviceworld/utils/humanize.js +6 -0
  108. package/dist/proserviceworld/utils/humanize.js.map +1 -0
  109. package/package.json +1 -1
@@ -1,362 +1,363 @@
1
1
  import { useClients as e, useComplianceChecks as t, useCreateComplianceCheck as n, useEngagements as r, useMatters as i, useResolveComplianceCheck as a } from "../hooks/useProServiceWorldApi.js";
2
- import { Banner as o, Empty as s, ErrorState as c, Field as l, LoadingBlock as u, MetricCard as d, Modal as f, NativeSelect as p, PageHeader as m, SectionCard as h, StatusPill as g, TableWrap as _, Td as v, TextArea as y, TextInput as b, Th as x, enumOptions as S, fmtDate as C, humanize as w } from "../components/ui.js";
3
- import { useAnalytics as T } from "../hooks/useAnalytics.js";
4
- import { useDeferredValue as E, useState as D } from "react";
5
- import { BadgeCheck as O, CheckCircle2 as k, Clock as A, Database as j, FileCheck as M, GraduationCap as N, ListChecks as P, Lock as F, Plus as I, Scale as L, Search as R, ShieldCheck as z } from "lucide-react";
6
- import { Fragment as B, jsx as V, jsxs as H } from "react/jsx-runtime";
7
- import { Button as U } from "@burdenoff/fe-libs/ui";
2
+ import { plural as o, useEnumLabel as s, useTr as c } from "../hooks/useTr.js";
3
+ import { Banner as l, Empty as u, ErrorState as d, Field as f, LoadingBlock as p, MetricCard as m, Modal as h, NativeSelect as g, PageHeader as _, SectionCard as v, StatusPill as y, TableWrap as b, Td as x, TextArea as S, TextInput as C, Th as w, enumOptions as T, fmtDate as E } from "../components/ui.js";
4
+ import { useAnalytics as D } from "../hooks/useAnalytics.js";
5
+ import { useDeferredValue as O, useState as k } from "react";
6
+ import { BadgeCheck as A, CheckCircle2 as j, Clock as M, Database as N, FileCheck as P, GraduationCap as F, ListChecks as I, Lock as L, Plus as R, Scale as z, Search as B, ShieldCheck as V } from "lucide-react";
7
+ import { Fragment as H, jsx as U, jsxs as W } from "react/jsx-runtime";
8
+ import { Button as G } from "@burdenoff/fe-libs/ui";
8
9
  //#region src/proserviceworld/pages/CompliancePage.tsx
9
- var W = [
10
+ var K = [
10
11
  "ENGAGEMENT_ACCEPTANCE",
11
12
  "INDEPENDENCE",
12
13
  "LICENSING",
13
14
  "CONTINUING_EDUCATION",
14
15
  "DATA_RETENTION",
15
16
  "LEGAL_HOLD"
16
- ], G = [
17
+ ], q = [
17
18
  "IN_REVIEW",
18
19
  "PASSED",
19
20
  "FAILED",
20
21
  "WAIVED"
21
- ], K = [
22
+ ], J = [
22
23
  "CLIENT",
23
24
  "ENGAGEMENT",
24
25
  "MATTER"
25
- ], q = {
26
- ENGAGEMENT_ACCEPTANCE: /* @__PURE__ */ V(M, { className: "h-3.5 w-3.5" }),
27
- INDEPENDENCE: /* @__PURE__ */ V(L, { className: "h-3.5 w-3.5" }),
28
- LICENSING: /* @__PURE__ */ V(O, { className: "h-3.5 w-3.5" }),
29
- CONTINUING_EDUCATION: /* @__PURE__ */ V(N, { className: "h-3.5 w-3.5" }),
30
- DATA_RETENTION: /* @__PURE__ */ V(j, { className: "h-3.5 w-3.5" }),
31
- LEGAL_HOLD: /* @__PURE__ */ V(F, { className: "h-3.5 w-3.5" })
32
- }, J = () => {
33
- let [e, n] = D(""), [r, i] = D(""), a = E(r), [l, f] = D(!1), [y, O] = D(null), [j, M] = D(null), { data: N, isLoading: F, error: L, refetch: B } = t({
34
- status: e || void 0,
35
- search: a.trim() || void 0
36
- }), { emitFact: W } = T(), G = N?.items ?? [], K = G.filter((e) => e.status === "PENDING").length, J = G.filter((e) => e.status === "IN_REVIEW").length, Z = G.filter((e) => e.status === "PASSED" || e.status === "FAILED" || e.status === "WAIVED").length;
37
- return /* @__PURE__ */ H("div", {
26
+ ], Y = {
27
+ ENGAGEMENT_ACCEPTANCE: /* @__PURE__ */ U(P, { className: "h-3.5 w-3.5" }),
28
+ INDEPENDENCE: /* @__PURE__ */ U(z, { className: "h-3.5 w-3.5" }),
29
+ LICENSING: /* @__PURE__ */ U(A, { className: "h-3.5 w-3.5" }),
30
+ CONTINUING_EDUCATION: /* @__PURE__ */ U(F, { className: "h-3.5 w-3.5" }),
31
+ DATA_RETENTION: /* @__PURE__ */ U(N, { className: "h-3.5 w-3.5" }),
32
+ LEGAL_HOLD: /* @__PURE__ */ U(L, { className: "h-3.5 w-3.5" })
33
+ }, X = () => {
34
+ let e = c(), n = s(), [r, i] = k(""), [a, f] = k(""), h = O(a), [S, A] = k(!1), [N, P] = k(null), [F, L] = k(null), { data: z, isLoading: H, error: K, refetch: q } = t({
35
+ status: r || void 0,
36
+ search: h.trim() || void 0
37
+ }), { emitFact: J } = D(), X = z?.items ?? [], $ = X.filter((e) => e.status === "PENDING").length, ee = X.filter((e) => e.status === "IN_REVIEW").length, te = X.filter((e) => e.status === "PASSED" || e.status === "FAILED" || e.status === "WAIVED").length;
38
+ return /* @__PURE__ */ W("div", {
38
39
  className: "space-y-6",
39
40
  children: [
40
- /* @__PURE__ */ V(m, {
41
- title: "Compliance",
42
- subtitle: "The duties that travel with the work — acceptance, independence, licensing, CE, retention and legal hold — as gates, not afterthoughts.",
43
- icon: /* @__PURE__ */ V(z, { className: "h-6 w-6" }),
44
- actions: /* @__PURE__ */ H(U, {
45
- onClick: () => f(!0),
46
- children: [/* @__PURE__ */ V(I, { className: "mr-1.5 h-4 w-4" }), "New check"]
41
+ /* @__PURE__ */ U(_, {
42
+ title: e("psw.compliance.title", "Compliance"),
43
+ subtitle: e("psw.compliance.subtitle", "The duties that travel with the work — acceptance, independence, licensing, CE, retention and legal hold — as gates, not afterthoughts."),
44
+ icon: /* @__PURE__ */ U(V, { className: "h-6 w-6" }),
45
+ actions: /* @__PURE__ */ W(G, {
46
+ onClick: () => A(!0),
47
+ children: [/* @__PURE__ */ U(R, { className: "me-1.5 h-4 w-4" }), e("psw.compliance.new", "New check")]
47
48
  })
48
49
  }),
49
- j && /* @__PURE__ */ V(o, {
50
+ F && /* @__PURE__ */ U(l, {
50
51
  tone: "success",
51
- onClose: () => M(null),
52
- children: j
52
+ onClose: () => L(null),
53
+ children: F
53
54
  }),
54
- G.length > 0 && /* @__PURE__ */ H("div", {
55
+ X.length > 0 && /* @__PURE__ */ W("div", {
55
56
  className: "grid grid-cols-2 gap-3 lg:grid-cols-4",
56
57
  children: [
57
- /* @__PURE__ */ V(d, {
58
- label: "Checks",
59
- value: G.length,
60
- icon: /* @__PURE__ */ V(P, { className: "h-4 w-4" })
58
+ /* @__PURE__ */ U(m, {
59
+ label: e("psw.compliance.metricChecks", "Checks"),
60
+ value: X.length,
61
+ icon: /* @__PURE__ */ U(I, { className: "h-4 w-4" })
61
62
  }),
62
- /* @__PURE__ */ V(d, {
63
- label: "Pending",
64
- value: K,
65
- icon: /* @__PURE__ */ V(A, { className: "h-4 w-4" }),
66
- tone: K ? "warning" : "neutral"
63
+ /* @__PURE__ */ U(m, {
64
+ label: e("psw.compliance.metricPending", "Pending"),
65
+ value: $,
66
+ icon: /* @__PURE__ */ U(M, { className: "h-4 w-4" }),
67
+ tone: $ ? "warning" : "neutral"
67
68
  }),
68
- /* @__PURE__ */ V(d, {
69
- label: "In review",
70
- value: J,
71
- icon: /* @__PURE__ */ V(z, { className: "h-4 w-4" }),
69
+ /* @__PURE__ */ U(m, {
70
+ label: e("psw.compliance.metricInReview", "In review"),
71
+ value: ee,
72
+ icon: /* @__PURE__ */ U(V, { className: "h-4 w-4" }),
72
73
  tone: "info"
73
74
  }),
74
- /* @__PURE__ */ V(d, {
75
- label: "Resolved",
76
- value: Z,
77
- icon: /* @__PURE__ */ V(k, { className: "h-4 w-4" }),
75
+ /* @__PURE__ */ U(m, {
76
+ label: e("psw.compliance.metricResolved", "Resolved"),
77
+ value: te,
78
+ icon: /* @__PURE__ */ U(j, { className: "h-4 w-4" }),
78
79
  tone: "success"
79
80
  })
80
81
  ]
81
82
  }),
82
- /* @__PURE__ */ H("div", {
83
+ /* @__PURE__ */ W("div", {
83
84
  className: "flex flex-col gap-2 sm:flex-row sm:items-center",
84
- children: [/* @__PURE__ */ H("div", {
85
+ children: [/* @__PURE__ */ W("div", {
85
86
  className: "relative flex-1",
86
- children: [/* @__PURE__ */ V(R, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary" }), /* @__PURE__ */ V(b, {
87
- placeholder: "Search compliance checks…",
88
- value: r,
89
- onChange: (e) => i(e.target.value),
87
+ children: [/* @__PURE__ */ U(B, { className: "pointer-events-none absolute start-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary" }), /* @__PURE__ */ U(C, {
88
+ placeholder: e("psw.compliance.searchPlaceholder", "Search compliance checks…"),
89
+ value: a,
90
+ onChange: (e) => f(e.target.value),
90
91
  onKeyDown: (e) => {
91
- e.key === "Enter" && r.trim() && W("psw.search.performed", {
92
+ e.key === "Enter" && a.trim() && J("psw.search.performed", {
92
93
  entityType: "compliance-check",
93
- queryLength: r.trim().length
94
+ queryLength: a.trim().length
94
95
  });
95
96
  },
96
- className: "pl-9"
97
+ className: "ps-9"
97
98
  })]
98
- }), /* @__PURE__ */ H(p, {
99
- value: e,
100
- onChange: (e) => n(e.target.value),
99
+ }), /* @__PURE__ */ W(g, {
100
+ value: r,
101
+ onChange: (e) => i(e.target.value),
101
102
  className: "sm:w-52",
102
- children: [/* @__PURE__ */ V("option", {
103
+ children: [/* @__PURE__ */ U("option", {
103
104
  value: "",
104
- children: "All statuses"
105
- }), S([
105
+ children: e("psw.common.allStatuses", "All statuses")
106
+ }), T([
106
107
  "PENDING",
107
108
  "IN_REVIEW",
108
109
  "PASSED",
109
110
  "FAILED",
110
111
  "WAIVED"
111
- ])]
112
+ ], n)]
112
113
  })]
113
114
  }),
114
- F ? /* @__PURE__ */ V(u, {}) : L ? /* @__PURE__ */ V(c, {
115
- error: L,
116
- onRetry: () => void B()
117
- }) : G.length === 0 ? /* @__PURE__ */ V(s, {
118
- title: "No compliance checks",
119
- description: "Raise a check to gate acceptance or track a professional obligation.",
120
- icon: /* @__PURE__ */ V(z, { className: "h-8 w-8" }),
121
- action: /* @__PURE__ */ H(U, {
122
- onClick: () => f(!0),
123
- children: [/* @__PURE__ */ V(I, { className: "mr-1.5 h-4 w-4" }), "New check"]
115
+ H ? /* @__PURE__ */ U(p, {}) : K ? /* @__PURE__ */ U(d, {
116
+ error: K,
117
+ onRetry: () => void q()
118
+ }) : X.length === 0 ? /* @__PURE__ */ U(u, {
119
+ title: e("psw.compliance.emptyTitle", "No compliance checks"),
120
+ description: e("psw.compliance.emptyDescription", "Raise a check to gate acceptance or track a professional obligation."),
121
+ icon: /* @__PURE__ */ U(V, { className: "h-8 w-8" }),
122
+ action: /* @__PURE__ */ W(G, {
123
+ onClick: () => A(!0),
124
+ children: [/* @__PURE__ */ U(R, { className: "me-1.5 h-4 w-4" }), e("psw.compliance.new", "New check")]
124
125
  })
125
- }) : /* @__PURE__ */ V(h, {
126
- title: `${G.length} check${G.length === 1 ? "" : "s"}`,
127
- children: /* @__PURE__ */ H(_, { children: [/* @__PURE__ */ V("thead", { children: /* @__PURE__ */ H("tr", { children: [
128
- /* @__PURE__ */ V(x, { children: "Title" }),
129
- /* @__PURE__ */ V(x, { children: "Type" }),
130
- /* @__PURE__ */ V(x, { children: "Subject" }),
131
- /* @__PURE__ */ V(x, { children: "Due" }),
132
- /* @__PURE__ */ V(x, { children: "Status" }),
133
- /* @__PURE__ */ V(x, {
134
- className: "text-right",
135
- children: "Actions"
126
+ }) : /* @__PURE__ */ U(v, {
127
+ title: o(e, "psw.compliance.count", X.length, "{{count}} check", "{{count}} checks"),
128
+ children: /* @__PURE__ */ W(b, { children: [/* @__PURE__ */ U("thead", { children: /* @__PURE__ */ W("tr", { children: [
129
+ /* @__PURE__ */ U(w, { children: e("psw.common.title", "Title") }),
130
+ /* @__PURE__ */ U(w, { children: e("psw.common.type", "Type") }),
131
+ /* @__PURE__ */ U(w, { children: e("psw.compliance.subject", "Subject") }),
132
+ /* @__PURE__ */ U(w, { children: e("psw.common.due", "Due") }),
133
+ /* @__PURE__ */ U(w, { children: e("psw.common.status", "Status") }),
134
+ /* @__PURE__ */ U(w, {
135
+ className: "text-end",
136
+ children: e("psw.common.actions", "Actions")
136
137
  })
137
- ] }) }), /* @__PURE__ */ V("tbody", { children: G.map((e) => /* @__PURE__ */ H("tr", {
138
+ ] }) }), /* @__PURE__ */ U("tbody", { children: X.map((t) => /* @__PURE__ */ W("tr", {
138
139
  className: "transition-colors hover:bg-bg-sunken/60",
139
140
  children: [
140
- /* @__PURE__ */ V(v, { children: /* @__PURE__ */ V("span", {
141
+ /* @__PURE__ */ U(x, { children: /* @__PURE__ */ U("span", {
141
142
  className: "font-medium text-text-primary",
142
- children: e.title
143
+ children: t.title
143
144
  }) }),
144
- /* @__PURE__ */ V(v, { children: /* @__PURE__ */ H("span", {
145
+ /* @__PURE__ */ U(x, { children: /* @__PURE__ */ W("span", {
145
146
  className: "inline-flex items-center gap-2 whitespace-nowrap",
146
- children: [/* @__PURE__ */ V("span", {
147
+ children: [/* @__PURE__ */ U("span", {
147
148
  className: "flex h-6 w-6 items-center justify-center rounded-md bg-bg-sunken text-accent",
148
- children: q[e.type]
149
- }), w(e.type)]
149
+ children: Y[t.type]
150
+ }), n(t.type)]
150
151
  }) }),
151
- /* @__PURE__ */ V(v, { children: w(e.subjectType) }),
152
- /* @__PURE__ */ V(v, {
152
+ /* @__PURE__ */ U(x, { children: n(t.subjectType) }),
153
+ /* @__PURE__ */ U(x, {
153
154
  className: "whitespace-nowrap",
154
- children: C(e.dueDate)
155
+ children: E(t.dueDate)
155
156
  }),
156
- /* @__PURE__ */ V(v, { children: /* @__PURE__ */ V(g, { status: e.status }) }),
157
- /* @__PURE__ */ V(v, {
158
- className: "text-right",
159
- children: e.status === "PENDING" || e.status === "IN_REVIEW" ? /* @__PURE__ */ V(U, {
157
+ /* @__PURE__ */ U(x, { children: /* @__PURE__ */ U(y, { status: t.status }) }),
158
+ /* @__PURE__ */ U(x, {
159
+ className: "text-end",
160
+ children: t.status === "PENDING" || t.status === "IN_REVIEW" ? /* @__PURE__ */ U(G, {
160
161
  variant: "ghost",
161
162
  size: "sm",
162
- onClick: () => O({
163
- id: e.id,
164
- title: e.title
163
+ onClick: () => P({
164
+ id: t.id,
165
+ title: t.title
165
166
  }),
166
- children: "Resolve"
167
- }) : /* @__PURE__ */ V("span", {
167
+ children: e("psw.common.resolve", "Resolve")
168
+ }) : /* @__PURE__ */ U("span", {
168
169
  className: "text-xs text-text-tertiary",
169
- children: e.resolvedAt ? C(e.resolvedAt) : ""
170
+ children: t.resolvedAt ? E(t.resolvedAt) : ""
170
171
  })
171
172
  })
172
173
  ]
173
- }, e.id)) })] })
174
+ }, t.id)) })] })
174
175
  }),
175
- l && /* @__PURE__ */ V(Y, {
176
- onClose: () => f(!1),
176
+ S && /* @__PURE__ */ U(Z, {
177
+ onClose: () => A(!1),
177
178
  onDone: () => {
178
- B(), M("Compliance check created.");
179
+ q(), L(e("psw.compliance.created", "Compliance check created."));
179
180
  }
180
181
  }),
181
- y && /* @__PURE__ */ V(X, {
182
- check: y,
183
- onClose: () => O(null),
182
+ N && /* @__PURE__ */ U(Q, {
183
+ check: N,
184
+ onClose: () => P(null),
184
185
  onDone: () => {
185
- B(), M("Compliance check resolved.");
186
+ q(), L(e("psw.compliance.resolved", "Compliance check resolved."));
186
187
  }
187
188
  })
188
189
  ]
189
190
  });
190
- }, Y = ({ onClose: t, onDone: a }) => {
191
- let s = n(), [c, u] = D({
191
+ }, Z = ({ onClose: t, onDone: a }) => {
192
+ let o = c(), u = s(), d = n(), [p, m] = k({
192
193
  type: "ENGAGEMENT_ACCEPTANCE",
193
194
  subjectType: "ENGAGEMENT",
194
195
  subjectId: "",
195
196
  title: "",
196
197
  dueDate: "",
197
198
  details: ""
198
- }), [d, m] = D(null), h = (e) => (t) => u((n) => ({
199
+ }), [_, v] = k(null), y = (e) => (t) => m((n) => ({
199
200
  ...n,
200
201
  [e]: t.target.value
201
- })), g = e({ pagination: { limit: 100 } }), _ = r({ pagination: { limit: 100 } }), v = i({ pagination: { limit: 100 } }), x = c.subjectType === "CLIENT" ? (g.data?.items ?? []).map((e) => ({
202
+ })), b = e({ pagination: { limit: 100 } }), x = r({ pagination: { limit: 100 } }), w = i({ pagination: { limit: 100 } }), E = p.subjectType === "CLIENT" ? (b.data?.items ?? []).map((e) => ({
202
203
  id: e.id,
203
204
  label: e.name
204
- })) : c.subjectType === "ENGAGEMENT" ? (_.data?.items ?? []).map((e) => ({
205
+ })) : p.subjectType === "ENGAGEMENT" ? (x.data?.items ?? []).map((e) => ({
205
206
  id: e.id,
206
207
  label: e.name
207
- })) : (v.data?.items ?? []).map((e) => ({
208
+ })) : (w.data?.items ?? []).map((e) => ({
208
209
  id: e.id,
209
210
  label: e.title
210
211
  }));
211
- return /* @__PURE__ */ V(f, {
212
+ return /* @__PURE__ */ U(h, {
212
213
  open: !0,
213
214
  onClose: t,
214
- title: "New compliance check",
215
- footer: /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V(U, {
215
+ title: o("psw.compliance.newTitle", "New compliance check"),
216
+ footer: /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(G, {
216
217
  variant: "outline",
217
218
  onClick: t,
218
- disabled: s.isPending,
219
- children: "Cancel"
220
- }), /* @__PURE__ */ V(U, {
219
+ disabled: d.isPending,
220
+ children: o("psw.common.cancel", "Cancel")
221
+ }), /* @__PURE__ */ U(G, {
221
222
  onClick: () => {
222
- if (m(null), !c.title.trim()) return m("Title is required.");
223
- if (!c.subjectId) return m("Select a subject.");
224
- s.mutate({
225
- type: c.type,
226
- subjectType: c.subjectType,
227
- subjectId: c.subjectId,
228
- title: c.title.trim(),
229
- dueDate: c.dueDate ? new Date(c.dueDate).toISOString() : null,
230
- details: c.details.trim() || null
223
+ if (v(null), !p.title.trim()) return v(o("psw.compliance.titleRequired", "Title is required."));
224
+ if (!p.subjectId) return v(o("psw.compliance.selectSubject", "Select a subject."));
225
+ d.mutate({
226
+ type: p.type,
227
+ subjectType: p.subjectType,
228
+ subjectId: p.subjectId,
229
+ title: p.title.trim(),
230
+ dueDate: p.dueDate ? new Date(p.dueDate).toISOString() : null,
231
+ details: p.details.trim() || null
231
232
  }, {
232
233
  onSuccess: () => {
233
234
  a(), t();
234
235
  },
235
- onError: (e) => m(e instanceof Error ? e.message : "Failed.")
236
+ onError: (e) => v(e instanceof Error ? e.message : o("psw.common.failed", "Failed."))
236
237
  });
237
238
  },
238
- disabled: s.isPending,
239
- children: s.isPending ? "Creating…" : "Create check"
239
+ disabled: d.isPending,
240
+ children: d.isPending ? o("psw.common.creating", "Creating…") : o("psw.compliance.create", "Create check")
240
241
  })] }),
241
- children: /* @__PURE__ */ H("div", {
242
+ children: /* @__PURE__ */ W("div", {
242
243
  className: "space-y-3",
243
244
  children: [
244
- d && /* @__PURE__ */ V(o, {
245
+ _ && /* @__PURE__ */ U(l, {
245
246
  tone: "danger",
246
- children: d
247
+ children: _
247
248
  }),
248
- /* @__PURE__ */ V(l, {
249
- label: "Title",
249
+ /* @__PURE__ */ U(f, {
250
+ label: o("psw.common.title", "Title"),
250
251
  required: !0,
251
- children: /* @__PURE__ */ V(b, {
252
- value: c.title,
253
- onChange: h("title"),
254
- placeholder: "Independence confirmation — FY26 audit"
252
+ children: /* @__PURE__ */ U(C, {
253
+ value: p.title,
254
+ onChange: y("title"),
255
+ placeholder: o("psw.compliance.titlePlaceholder", "Independence confirmation — FY26 audit")
255
256
  })
256
257
  }),
257
- /* @__PURE__ */ V(l, {
258
- label: "Type",
259
- children: /* @__PURE__ */ V(p, {
260
- value: c.type,
261
- onChange: h("type"),
262
- children: S(W)
258
+ /* @__PURE__ */ U(f, {
259
+ label: o("psw.common.type", "Type"),
260
+ children: /* @__PURE__ */ U(g, {
261
+ value: p.type,
262
+ onChange: y("type"),
263
+ children: T(K, u)
263
264
  })
264
265
  }),
265
- /* @__PURE__ */ H("div", {
266
+ /* @__PURE__ */ W("div", {
266
267
  className: "grid grid-cols-2 gap-3",
267
- children: [/* @__PURE__ */ V(l, {
268
- label: "Subject type",
269
- children: /* @__PURE__ */ V(p, {
270
- value: c.subjectType,
271
- onChange: (e) => u((t) => ({
268
+ children: [/* @__PURE__ */ U(f, {
269
+ label: o("psw.compliance.subjectType", "Subject type"),
270
+ children: /* @__PURE__ */ U(g, {
271
+ value: p.subjectType,
272
+ onChange: (e) => m((t) => ({
272
273
  ...t,
273
274
  subjectType: e.target.value,
274
275
  subjectId: ""
275
276
  })),
276
- children: S(K)
277
+ children: T(J, u)
277
278
  })
278
- }), /* @__PURE__ */ V(l, {
279
- label: "Subject",
279
+ }), /* @__PURE__ */ U(f, {
280
+ label: o("psw.compliance.subject", "Subject"),
280
281
  required: !0,
281
- children: /* @__PURE__ */ H(p, {
282
- value: c.subjectId,
283
- onChange: h("subjectId"),
284
- children: [/* @__PURE__ */ V("option", {
282
+ children: /* @__PURE__ */ W(g, {
283
+ value: p.subjectId,
284
+ onChange: y("subjectId"),
285
+ children: [/* @__PURE__ */ U("option", {
285
286
  value: "",
286
- children: "Select…"
287
- }), x.map((e) => /* @__PURE__ */ V("option", {
287
+ children: o("psw.common.select", "Select…")
288
+ }), E.map((e) => /* @__PURE__ */ U("option", {
288
289
  value: e.id,
289
290
  children: e.label
290
291
  }, e.id))]
291
292
  })
292
293
  })]
293
294
  }),
294
- /* @__PURE__ */ V(l, {
295
- label: "Due date",
296
- children: /* @__PURE__ */ V(b, {
295
+ /* @__PURE__ */ U(f, {
296
+ label: o("psw.common.dueDate", "Due date"),
297
+ children: /* @__PURE__ */ U(C, {
297
298
  type: "date",
298
- value: c.dueDate,
299
- onChange: h("dueDate")
299
+ value: p.dueDate,
300
+ onChange: y("dueDate")
300
301
  })
301
302
  }),
302
- /* @__PURE__ */ V(l, {
303
- label: "Details",
304
- children: /* @__PURE__ */ V(y, {
305
- value: c.details,
306
- onChange: h("details")
303
+ /* @__PURE__ */ U(f, {
304
+ label: o("psw.compliance.details", "Details"),
305
+ children: /* @__PURE__ */ U(S, {
306
+ value: p.details,
307
+ onChange: y("details")
307
308
  })
308
309
  })
309
310
  ]
310
311
  })
311
312
  });
312
- }, X = ({ check: e, onClose: t, onDone: n }) => {
313
- let r = a(), [i, s] = D("PASSED"), [c, u] = D(""), [d, m] = D(null);
314
- return /* @__PURE__ */ V(f, {
313
+ }, Q = ({ check: e, onClose: t, onDone: n }) => {
314
+ let r = c(), i = s(), o = a(), [u, d] = k("PASSED"), [p, m] = k(""), [_, v] = k(null);
315
+ return /* @__PURE__ */ U(h, {
315
316
  open: !0,
316
317
  onClose: t,
317
- title: `Resolve: ${e.title}`,
318
- footer: /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V(U, {
318
+ title: r("psw.compliance.resolveTitle", "Resolve: {{title}}", { title: e.title }),
319
+ footer: /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(G, {
319
320
  variant: "outline",
320
321
  onClick: t,
321
- disabled: r.isPending,
322
- children: "Cancel"
323
- }), /* @__PURE__ */ V(U, {
324
- onClick: () => r.mutate({
322
+ disabled: o.isPending,
323
+ children: r("psw.common.cancel", "Cancel")
324
+ }), /* @__PURE__ */ U(G, {
325
+ onClick: () => o.mutate({
325
326
  id: e.id,
326
- status: i,
327
- details: c.trim() || void 0
327
+ status: u,
328
+ details: p.trim() || void 0
328
329
  }, {
329
330
  onSuccess: () => {
330
331
  n(), t();
331
332
  },
332
- onError: (e) => m(e instanceof Error ? e.message : "Failed.")
333
+ onError: (e) => v(e instanceof Error ? e.message : r("psw.common.failed", "Failed."))
333
334
  }),
334
- disabled: r.isPending,
335
- children: r.isPending ? "Saving…" : "Resolve"
335
+ disabled: o.isPending,
336
+ children: o.isPending ? r("psw.common.saving", "Saving…") : r("psw.common.resolve", "Resolve")
336
337
  })] }),
337
- children: /* @__PURE__ */ H("div", {
338
+ children: /* @__PURE__ */ W("div", {
338
339
  className: "space-y-3",
339
340
  children: [
340
- d && /* @__PURE__ */ V(o, {
341
+ _ && /* @__PURE__ */ U(l, {
341
342
  tone: "danger",
342
- children: d
343
+ children: _
343
344
  }),
344
- /* @__PURE__ */ V(l, {
345
- label: "Outcome",
346
- children: /* @__PURE__ */ V(p, {
347
- value: i,
348
- onChange: (e) => s(e.target.value),
349
- children: G.map((e) => /* @__PURE__ */ V("option", {
345
+ /* @__PURE__ */ U(f, {
346
+ label: r("psw.common.outcome", "Outcome"),
347
+ children: /* @__PURE__ */ U(g, {
348
+ value: u,
349
+ onChange: (e) => d(e.target.value),
350
+ children: q.map((e) => /* @__PURE__ */ U("option", {
350
351
  value: e,
351
- children: w(e)
352
+ children: i(e)
352
353
  }, e))
353
354
  })
354
355
  }),
355
- /* @__PURE__ */ V(l, {
356
- label: "Notes",
357
- children: /* @__PURE__ */ V(y, {
358
- value: c,
359
- onChange: (e) => u(e.target.value)
356
+ /* @__PURE__ */ U(f, {
357
+ label: r("psw.common.notes", "Notes"),
358
+ children: /* @__PURE__ */ U(S, {
359
+ value: p,
360
+ onChange: (e) => m(e.target.value)
360
361
  })
361
362
  })
362
363
  ]
@@ -364,6 +365,6 @@ var W = [
364
365
  });
365
366
  };
366
367
  //#endregion
367
- export { J as CompliancePage };
368
+ export { X as CompliancePage };
368
369
 
369
370
  //# sourceMappingURL=CompliancePage.js.map