@burdenoff/microfe-proserviceworld 2026.1026.2 → 2026.1031.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 (105) hide show
  1. package/dist/proserviceworld/components/CredentialDirectory.js +44 -43
  2. package/dist/proserviceworld/components/CredentialDirectory.js.map +1 -1
  3. package/dist/proserviceworld/components/CredentialReminderPanel.js +5 -4
  4. package/dist/proserviceworld/components/CredentialReminderPanel.js.map +1 -1
  5. package/dist/proserviceworld/components/ui.d.ts +7 -3
  6. package/dist/proserviceworld/components/ui.d.ts.map +1 -1
  7. package/dist/proserviceworld/components/ui.js +135 -121
  8. package/dist/proserviceworld/components/ui.js.map +1 -1
  9. package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts +28 -0
  10. package/dist/proserviceworld/hooks/useProServiceWorldApi.d.ts.map +1 -1
  11. package/dist/proserviceworld/hooks/useProServiceWorldApi.js +95 -73
  12. package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -1
  13. package/dist/proserviceworld/hooks/useTr.d.ts +49 -8
  14. package/dist/proserviceworld/hooks/useTr.d.ts.map +1 -1
  15. package/dist/proserviceworld/hooks/useTr.js +45 -21
  16. package/dist/proserviceworld/hooks/useTr.js.map +1 -1
  17. package/dist/proserviceworld/i18n/catalog/analytics.d.ts +5 -0
  18. package/dist/proserviceworld/i18n/catalog/analytics.d.ts.map +1 -0
  19. package/dist/proserviceworld/i18n/catalog/analytics.js +271 -0
  20. package/dist/proserviceworld/i18n/catalog/analytics.js.map +1 -0
  21. package/dist/proserviceworld/i18n/catalog/common.d.ts +9 -0
  22. package/dist/proserviceworld/i18n/catalog/common.d.ts.map +1 -0
  23. package/dist/proserviceworld/i18n/catalog/common.js +163 -0
  24. package/dist/proserviceworld/i18n/catalog/common.js.map +1 -0
  25. package/dist/proserviceworld/i18n/catalog/compliance.d.ts +5 -0
  26. package/dist/proserviceworld/i18n/catalog/compliance.d.ts.map +1 -0
  27. package/dist/proserviceworld/i18n/catalog/compliance.js +157 -0
  28. package/dist/proserviceworld/i18n/catalog/compliance.js.map +1 -0
  29. package/dist/proserviceworld/i18n/catalog/conflicts.d.ts +5 -0
  30. package/dist/proserviceworld/i18n/catalog/conflicts.d.ts.map +1 -0
  31. package/dist/proserviceworld/i18n/catalog/conflicts.js +145 -0
  32. package/dist/proserviceworld/i18n/catalog/conflicts.js.map +1 -0
  33. package/dist/proserviceworld/i18n/catalog/documents.d.ts +5 -0
  34. package/dist/proserviceworld/i18n/catalog/documents.d.ts.map +1 -0
  35. package/dist/proserviceworld/i18n/catalog/documents.js +157 -0
  36. package/dist/proserviceworld/i18n/catalog/documents.js.map +1 -0
  37. package/dist/proserviceworld/i18n/catalog/enums.d.ts +10 -0
  38. package/dist/proserviceworld/i18n/catalog/enums.d.ts.map +1 -0
  39. package/dist/proserviceworld/i18n/catalog/enums.js +481 -0
  40. package/dist/proserviceworld/i18n/catalog/enums.js.map +1 -0
  41. package/dist/proserviceworld/i18n/catalog/index.d.ts +9 -0
  42. package/dist/proserviceworld/i18n/catalog/index.d.ts.map +1 -0
  43. package/dist/proserviceworld/i18n/catalog/index.js +25 -0
  44. package/dist/proserviceworld/i18n/catalog/index.js.map +1 -0
  45. package/dist/proserviceworld/i18n/catalog/invoices.d.ts +5 -0
  46. package/dist/proserviceworld/i18n/catalog/invoices.d.ts.map +1 -0
  47. package/dist/proserviceworld/i18n/catalog/invoices.js +247 -0
  48. package/dist/proserviceworld/i18n/catalog/invoices.js.map +1 -0
  49. package/dist/proserviceworld/i18n/catalog/practiceAreas.d.ts +5 -0
  50. package/dist/proserviceworld/i18n/catalog/practiceAreas.d.ts.map +1 -0
  51. package/dist/proserviceworld/i18n/catalog/practiceAreas.js +97 -0
  52. package/dist/proserviceworld/i18n/catalog/practiceAreas.js.map +1 -0
  53. package/dist/proserviceworld/i18n/catalog/time.d.ts +5 -0
  54. package/dist/proserviceworld/i18n/catalog/time.d.ts.map +1 -0
  55. package/dist/proserviceworld/i18n/catalog/time.js +301 -0
  56. package/dist/proserviceworld/i18n/catalog/time.js.map +1 -0
  57. package/dist/proserviceworld/i18n/index.d.ts +10 -9
  58. package/dist/proserviceworld/i18n/index.d.ts.map +1 -1
  59. package/dist/proserviceworld/i18n/index.js +16 -12
  60. package/dist/proserviceworld/i18n/index.js.map +1 -1
  61. package/dist/proserviceworld/i18n/types.d.ts +13 -0
  62. package/dist/proserviceworld/i18n/types.d.ts.map +1 -0
  63. package/dist/proserviceworld/i18n/types.js +18 -0
  64. package/dist/proserviceworld/i18n/types.js.map +1 -0
  65. package/dist/proserviceworld/pages/AnalyticsPage.d.ts.map +1 -1
  66. package/dist/proserviceworld/pages/AnalyticsPage.js +236 -152
  67. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  68. package/dist/proserviceworld/pages/ClientDetailPage.js +99 -98
  69. package/dist/proserviceworld/pages/ClientDetailPage.js.map +1 -1
  70. package/dist/proserviceworld/pages/ClientsPage.d.ts.map +1 -1
  71. package/dist/proserviceworld/pages/ClientsPage.js +181 -181
  72. package/dist/proserviceworld/pages/ClientsPage.js.map +1 -1
  73. package/dist/proserviceworld/pages/CompliancePage.d.ts.map +1 -1
  74. package/dist/proserviceworld/pages/CompliancePage.js +210 -209
  75. package/dist/proserviceworld/pages/CompliancePage.js.map +1 -1
  76. package/dist/proserviceworld/pages/ConflictsPage.d.ts.map +1 -1
  77. package/dist/proserviceworld/pages/ConflictsPage.js +139 -138
  78. package/dist/proserviceworld/pages/ConflictsPage.js.map +1 -1
  79. package/dist/proserviceworld/pages/DocumentsPage.d.ts.map +1 -1
  80. package/dist/proserviceworld/pages/DocumentsPage.js +150 -149
  81. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  82. package/dist/proserviceworld/pages/EngagementDetailPage.js +105 -104
  83. package/dist/proserviceworld/pages/EngagementDetailPage.js.map +1 -1
  84. package/dist/proserviceworld/pages/EngagementsPage.d.ts.map +1 -1
  85. package/dist/proserviceworld/pages/EngagementsPage.js +137 -137
  86. package/dist/proserviceworld/pages/EngagementsPage.js.map +1 -1
  87. package/dist/proserviceworld/pages/InvoicesPage.d.ts.map +1 -1
  88. package/dist/proserviceworld/pages/InvoicesPage.js +275 -258
  89. package/dist/proserviceworld/pages/InvoicesPage.js.map +1 -1
  90. package/dist/proserviceworld/pages/MattersPage.d.ts.map +1 -1
  91. package/dist/proserviceworld/pages/MattersPage.js +166 -166
  92. package/dist/proserviceworld/pages/MattersPage.js.map +1 -1
  93. package/dist/proserviceworld/pages/PracticeAreasPage.d.ts.map +1 -1
  94. package/dist/proserviceworld/pages/PracticeAreasPage.js +100 -99
  95. package/dist/proserviceworld/pages/PracticeAreasPage.js.map +1 -1
  96. package/dist/proserviceworld/pages/PractitionerCredentialsPage.js +30 -29
  97. package/dist/proserviceworld/pages/PractitionerCredentialsPage.js.map +1 -1
  98. package/dist/proserviceworld/pages/TimePage.d.ts.map +1 -1
  99. package/dist/proserviceworld/pages/TimePage.js +343 -350
  100. package/dist/proserviceworld/pages/TimePage.js.map +1 -1
  101. package/dist/proserviceworld/utils/humanize.d.ts +3 -0
  102. package/dist/proserviceworld/utils/humanize.d.ts.map +1 -0
  103. package/dist/proserviceworld/utils/humanize.js +6 -0
  104. package/dist/proserviceworld/utils/humanize.js.map +1 -0
  105. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  import { cn as e } from "../utils/cn.js";
2
- import { useEffect as t } from "react";
3
- import { AlertCircle as n, CheckCircle2 as r, Info as i, Loader2 as a, X as o } from "lucide-react";
4
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
- import { Button as l } from "@burdenoff/fe-libs/ui";
2
+ import { humanize as t } from "../utils/humanize.js";
3
+ import { useEnumLabel as n, useTr as r } from "../hooks/useTr.js";
4
+ import { useEffect as i } from "react";
5
+ import { AlertCircle as a, CheckCircle2 as o, Info as s, Loader2 as c, X as l } from "lucide-react";
6
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
7
+ import { Button as f } from "@burdenoff/fe-libs/ui";
6
8
  //#region src/proserviceworld/components/ui.tsx
7
- var u = (e) => (e ?? "").toLowerCase().replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase()), d = (e) => {
9
+ var p = (e) => {
8
10
  if (!e) return "—";
9
11
  let t = new Date(e);
10
12
  return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
@@ -12,7 +14,7 @@ var u = (e) => (e ?? "").toLowerCase().replace(/_/g, " ").replace(/\b\w/g, (e) =
12
14
  month: "short",
13
15
  day: "numeric"
14
16
  });
15
- }, f = (e, t = "USD") => {
17
+ }, m = (e, t = "USD") => {
16
18
  let n = e ?? 0;
17
19
  try {
18
20
  return new Intl.NumberFormat(void 0, {
@@ -23,14 +25,14 @@ var u = (e) => (e ?? "").toLowerCase().replace(/_/g, " ").replace(/\b\w/g, (e) =
23
25
  } catch {
24
26
  return `${t} ${n.toLocaleString()}`;
25
27
  }
26
- }, p = (e) => `${(e ?? 0).toLocaleString(void 0, { maximumFractionDigits: 1 })}h`, m = (e) => p((e ?? 0) / 60), h = {
28
+ }, h = (e) => `${(e ?? 0).toLocaleString(void 0, { maximumFractionDigits: 1 })}h`, g = (e) => h((e ?? 0) / 60), _ = {
27
29
  neutral: "bg-bg-sunken text-text-secondary",
28
30
  success: "bg-status-success-bg-subtle text-status-success-text",
29
31
  warning: "bg-status-warning-bg-subtle text-status-warning-text",
30
32
  danger: "bg-status-error-bg-subtle text-status-error-text",
31
33
  info: "bg-bg-sunken text-text-link",
32
34
  accent: "bg-bg-sunken text-accent"
33
- }, g = {
35
+ }, v = {
34
36
  ACTIVE: "success",
35
37
  PROSPECT: "info",
36
38
  INACTIVE: "neutral",
@@ -75,205 +77,217 @@ var u = (e) => (e ?? "").toLowerCase().replace(/_/g, " ").replace(/\b\w/g, (e) =
75
77
  DECLINED: "danger",
76
78
  EXPIRED: "neutral",
77
79
  REVOKED: "neutral"
78
- }, _ = ({ status: t, className: n }) => /* @__PURE__ */ c("span", {
79
- className: e("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium whitespace-nowrap", h[g[t] ?? "neutral"], n),
80
- children: [/* @__PURE__ */ s("span", { className: "h-1.5 w-1.5 rounded-full bg-current opacity-70" }), u(t)]
81
- }), v = ({ title: e, subtitle: t, actions: n, icon: r }) => /* @__PURE__ */ c("div", {
80
+ }, y = ({ status: t, className: r }) => {
81
+ let i = n();
82
+ return /* @__PURE__ */ d("span", {
83
+ className: e("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium whitespace-nowrap", _[v[t] ?? "neutral"], r),
84
+ children: [/* @__PURE__ */ u("span", { className: "h-1.5 w-1.5 rounded-full bg-current opacity-70" }), i(t)]
85
+ });
86
+ }, b = ({ title: e, subtitle: t, actions: n, icon: r }) => /* @__PURE__ */ d("div", {
82
87
  className: "flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",
83
- children: [/* @__PURE__ */ c("div", {
88
+ children: [/* @__PURE__ */ d("div", {
84
89
  className: "flex items-start gap-3.5",
85
- children: [r ? /* @__PURE__ */ s("div", {
90
+ children: [r ? /* @__PURE__ */ u("div", {
86
91
  className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-bg-sunken text-accent",
87
92
  children: r
88
- }) : null, /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
93
+ }) : null, /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("h1", {
89
94
  className: "text-2xl font-bold tracking-tight text-text-primary sm:text-3xl",
90
95
  children: e
91
- }), t ? /* @__PURE__ */ s("p", {
96
+ }), t ? /* @__PURE__ */ u("p", {
92
97
  className: "mt-1.5 max-w-2xl text-sm leading-relaxed text-text-secondary",
93
98
  children: t
94
99
  }) : null] })]
95
- }), n ? /* @__PURE__ */ s("div", {
100
+ }), n ? /* @__PURE__ */ u("div", {
96
101
  className: "flex flex-wrap items-center gap-2",
97
102
  children: n
98
103
  }) : null]
99
- }), y = ({ label: t, value: n, hint: r, icon: i, tone: a = "neutral" }) => /* @__PURE__ */ c("div", {
104
+ }), x = ({ label: t, value: n, hint: r, icon: i, tone: a = "neutral" }) => /* @__PURE__ */ d("div", {
100
105
  className: "vc-lift-on-hover rounded-2xl border border-border-seam bg-bg-surface p-5 shadow-sm",
101
106
  children: [
102
- /* @__PURE__ */ c("div", {
107
+ /* @__PURE__ */ d("div", {
103
108
  className: "flex items-center justify-between gap-2",
104
- children: [/* @__PURE__ */ s("span", {
109
+ children: [/* @__PURE__ */ u("span", {
105
110
  className: "text-xs font-medium uppercase tracking-wider text-text-tertiary",
106
111
  children: t
107
- }), i ? /* @__PURE__ */ s("span", {
108
- className: e("flex h-9 w-9 items-center justify-center rounded-full", h[a]),
112
+ }), i ? /* @__PURE__ */ u("span", {
113
+ className: e("flex h-9 w-9 items-center justify-center rounded-full", _[a]),
109
114
  children: i
110
115
  }) : null]
111
116
  }),
112
- /* @__PURE__ */ s("div", {
117
+ /* @__PURE__ */ u("div", {
113
118
  className: "mt-3 text-2xl font-semibold tracking-tight text-text-primary sm:text-3xl",
114
119
  children: n
115
120
  }),
116
- r ? /* @__PURE__ */ s("div", {
121
+ r ? /* @__PURE__ */ u("div", {
117
122
  className: "mt-1 text-xs text-text-tertiary",
118
123
  children: r
119
124
  }) : null
120
125
  ]
121
- }), b = ({ title: t, description: n, action: r, children: i, className: a }) => /* @__PURE__ */ c("section", {
126
+ }), S = ({ title: t, description: n, action: r, children: i, className: a }) => /* @__PURE__ */ d("section", {
122
127
  className: e("rounded-2xl border border-border-seam bg-bg-surface shadow-sm", a),
123
- children: [(t || r) && /* @__PURE__ */ c("header", {
128
+ children: [(t || r) && /* @__PURE__ */ d("header", {
124
129
  className: "flex items-center justify-between gap-3 border-b border-border-seam px-5 py-3.5",
125
- children: [/* @__PURE__ */ c("div", { children: [t ? /* @__PURE__ */ s("h2", {
130
+ children: [/* @__PURE__ */ d("div", { children: [t ? /* @__PURE__ */ u("h2", {
126
131
  className: "text-sm font-semibold text-text-primary",
127
132
  children: t
128
- }) : null, n ? /* @__PURE__ */ s("p", {
133
+ }) : null, n ? /* @__PURE__ */ u("p", {
129
134
  className: "mt-0.5 text-xs text-text-tertiary",
130
135
  children: n
131
136
  }) : null] }), r]
132
- }), /* @__PURE__ */ s("div", {
137
+ }), /* @__PURE__ */ u("div", {
133
138
  className: "p-5",
134
139
  children: i
135
140
  })]
136
- }), x = "w-full rounded-lg border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary focus:border-accent focus:outline-none focus:ring-2 focus:ring-accent/30 disabled:opacity-50", S = ({ label: t, required: n, hint: r, children: i, className: a }) => /* @__PURE__ */ c("label", {
141
+ }), C = "w-full rounded-lg border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary focus:border-accent focus:outline-none focus:ring-2 focus:ring-accent/30 disabled:opacity-50", w = ({ label: t, required: n, hint: r, children: i, className: a }) => /* @__PURE__ */ d("label", {
137
142
  className: e("block", a),
138
143
  children: [
139
- /* @__PURE__ */ c("span", {
144
+ /* @__PURE__ */ d("span", {
140
145
  className: "mb-1 block text-xs font-medium text-text-secondary",
141
- children: [t, n ? /* @__PURE__ */ s("span", {
146
+ children: [t, n ? /* @__PURE__ */ u("span", {
142
147
  className: "text-status-error-text",
143
148
  children: " *"
144
149
  }) : null]
145
150
  }),
146
151
  i,
147
- r ? /* @__PURE__ */ s("span", {
152
+ r ? /* @__PURE__ */ u("span", {
148
153
  className: "mt-1 block text-xs text-text-tertiary",
149
154
  children: r
150
155
  }) : null
151
156
  ]
152
- }), C = ({ className: t, ...n }) => /* @__PURE__ */ s("input", {
153
- className: e(x, t),
157
+ }), T = ({ className: t, ...n }) => /* @__PURE__ */ u("input", {
158
+ className: e(C, t),
154
159
  ...n
155
- }), w = ({ className: t, ...n }) => /* @__PURE__ */ s("textarea", {
156
- className: e(x, "min-h-[80px] resize-y", t),
160
+ }), E = ({ className: t, ...n }) => /* @__PURE__ */ u("textarea", {
161
+ className: e(C, "min-h-[80px] resize-y", t),
157
162
  ...n
158
- }), T = ({ className: t, children: n, ...r }) => /* @__PURE__ */ s("select", {
159
- className: e(x, "appearance-none pr-8", t),
163
+ }), D = ({ className: t, children: n, ...r }) => /* @__PURE__ */ u("select", {
164
+ className: e(C, "appearance-none pe-8", t),
160
165
  ...r,
161
166
  children: n
162
- }), E = (e) => e.map((e) => /* @__PURE__ */ s("option", {
167
+ }), O = (e, n = t) => e.map((e) => /* @__PURE__ */ u("option", {
163
168
  value: e,
164
- children: u(e)
165
- }, e)), D = ({ tone: t = "info", children: a, onClose: l }) => {
166
- let u = t === "success" ? r : t === "danger" ? n : i;
167
- return /* @__PURE__ */ c("div", {
168
- className: e("flex items-start gap-2 rounded-lg px-3 py-2 text-sm", t === "success" ? h.success : t === "danger" ? h.danger : "bg-bg-sunken text-text-secondary"),
169
+ children: n(e)
170
+ }, e)), k = ({ tone: t = "info", children: n, onClose: i }) => {
171
+ let c = r(), f = t === "success" ? o : t === "danger" ? a : s;
172
+ return /* @__PURE__ */ d("div", {
173
+ className: e("flex items-start gap-2 rounded-lg px-3 py-2 text-sm", t === "success" ? _.success : t === "danger" ? _.danger : "bg-bg-sunken text-text-secondary"),
169
174
  children: [
170
- /* @__PURE__ */ s(u, { className: "mt-0.5 h-4 w-4 shrink-0" }),
171
- /* @__PURE__ */ s("div", {
175
+ /* @__PURE__ */ u(f, { className: "mt-0.5 h-4 w-4 shrink-0" }),
176
+ /* @__PURE__ */ u("div", {
172
177
  className: "flex-1",
173
- children: a
178
+ children: n
174
179
  }),
175
- l ? /* @__PURE__ */ s("button", {
180
+ i ? /* @__PURE__ */ u("button", {
176
181
  type: "button",
177
- onClick: l,
182
+ onClick: i,
178
183
  className: "opacity-70 hover:opacity-100",
179
- "aria-label": "Dismiss",
180
- children: /* @__PURE__ */ s(o, { className: "h-4 w-4" })
184
+ "aria-label": c("psw.common.dismiss", "Dismiss"),
185
+ children: /* @__PURE__ */ u(l, { className: "h-4 w-4" })
181
186
  }) : null
182
187
  ]
183
188
  });
184
- }, O = ({ open: n, onClose: r, title: i, children: a, footer: l, wide: u }) => (t(() => {
185
- if (!n) return;
186
- let e = (e) => {
187
- e.key === "Escape" && r();
188
- };
189
- return document.addEventListener("keydown", e), document.body.style.overflow = "hidden", () => {
190
- document.removeEventListener("keydown", e), document.body.style.overflow = "";
191
- };
192
- }, [n, r]), n ? /* @__PURE__ */ c("div", {
193
- className: "fixed inset-0 z-50 flex items-end justify-center sm:items-center",
194
- role: "dialog",
195
- "aria-modal": "true",
196
- "aria-label": i,
197
- children: [/* @__PURE__ */ s("div", {
198
- className: "absolute inset-0 bg-black/50 backdrop-blur-sm",
199
- onClick: r
200
- }), /* @__PURE__ */ c("div", {
201
- className: e("relative flex max-h-[92vh] w-full flex-col overflow-hidden rounded-t-2xl border border-border-seam bg-bg-surface shadow-xl sm:max-h-[88vh] sm:rounded-2xl", u ? "sm:max-w-3xl" : "sm:max-w-lg"),
189
+ }, A = ({ open: t, onClose: n, title: a, children: o, footer: s, wide: c }) => {
190
+ let f = r();
191
+ return i(() => {
192
+ if (!t) return;
193
+ let e = (e) => {
194
+ e.key === "Escape" && n();
195
+ };
196
+ return document.addEventListener("keydown", e), document.body.style.overflow = "hidden", () => {
197
+ document.removeEventListener("keydown", e), document.body.style.overflow = "";
198
+ };
199
+ }, [t, n]), t ? /* @__PURE__ */ d("div", {
200
+ className: "fixed inset-0 z-50 flex items-end justify-center sm:items-center",
201
+ role: "dialog",
202
+ "aria-modal": "true",
203
+ "aria-label": a,
204
+ children: [/* @__PURE__ */ u("div", {
205
+ className: "absolute inset-0 bg-black/50 backdrop-blur-sm",
206
+ onClick: n
207
+ }), /* @__PURE__ */ d("div", {
208
+ className: e("relative flex max-h-[92vh] w-full flex-col overflow-hidden rounded-t-2xl border border-border-seam bg-bg-surface shadow-xl sm:max-h-[88vh] sm:rounded-2xl", c ? "sm:max-w-3xl" : "sm:max-w-lg"),
209
+ children: [
210
+ /* @__PURE__ */ d("header", {
211
+ className: "flex items-center justify-between border-b border-border-seam px-4 py-3",
212
+ children: [/* @__PURE__ */ u("h2", {
213
+ className: "text-base font-semibold text-text-primary",
214
+ children: a
215
+ }), /* @__PURE__ */ u("button", {
216
+ type: "button",
217
+ onClick: n,
218
+ className: "rounded-lg p-1 text-text-tertiary hover:bg-bg-sunken hover:text-text-primary",
219
+ "aria-label": f("psw.common.close", "Close"),
220
+ children: /* @__PURE__ */ u(l, { className: "h-5 w-5" })
221
+ })]
222
+ }),
223
+ /* @__PURE__ */ u("div", {
224
+ className: "flex-1 overflow-y-auto px-4 py-4",
225
+ children: o
226
+ }),
227
+ s ? /* @__PURE__ */ u("footer", {
228
+ className: "flex items-center justify-end gap-2 border-t border-border-seam px-4 py-3",
229
+ children: s
230
+ }) : null
231
+ ]
232
+ })]
233
+ }) : null;
234
+ }, j = ({ label: e }) => {
235
+ let t = r();
236
+ return /* @__PURE__ */ d("div", {
237
+ className: "flex min-h-[220px] flex-col items-center justify-center gap-3 text-text-tertiary",
238
+ children: [/* @__PURE__ */ u(c, { className: "h-7 w-7 animate-spin text-accent" }), /* @__PURE__ */ u("span", {
239
+ className: "text-sm",
240
+ children: e ?? t("psw.common.loading", "Loading…")
241
+ })]
242
+ });
243
+ }, M = ({ error: e, onRetry: t }) => {
244
+ let n = r();
245
+ return /* @__PURE__ */ d("div", {
246
+ className: "flex min-h-[220px] flex-col items-center justify-center gap-3 text-center",
202
247
  children: [
203
- /* @__PURE__ */ c("header", {
204
- className: "flex items-center justify-between border-b border-border-seam px-4 py-3",
205
- children: [/* @__PURE__ */ s("h2", {
206
- className: "text-base font-semibold text-text-primary",
207
- children: i
208
- }), /* @__PURE__ */ s("button", {
209
- type: "button",
210
- onClick: r,
211
- className: "rounded-lg p-1 text-text-tertiary hover:bg-bg-sunken hover:text-text-primary",
212
- "aria-label": "Close",
213
- children: /* @__PURE__ */ s(o, { className: "h-5 w-5" })
214
- })]
215
- }),
216
- /* @__PURE__ */ s("div", {
217
- className: "flex-1 overflow-y-auto px-4 py-4",
218
- children: a
248
+ /* @__PURE__ */ u(a, { className: "h-8 w-8 text-status-error-text" }),
249
+ /* @__PURE__ */ u("p", {
250
+ className: "max-w-md text-sm text-text-secondary",
251
+ children: e instanceof Error ? e.message : n("psw.common.error", "Something went wrong.")
219
252
  }),
220
- l ? /* @__PURE__ */ s("footer", {
221
- className: "flex items-center justify-end gap-2 border-t border-border-seam px-4 py-3",
222
- children: l
253
+ t ? /* @__PURE__ */ u(f, {
254
+ variant: "outline",
255
+ size: "sm",
256
+ onClick: t,
257
+ children: n("psw.common.tryAgain", "Try again")
223
258
  }) : null
224
259
  ]
225
- })]
226
- }) : null), k = ({ label: e = "Loading…" }) => /* @__PURE__ */ c("div", {
227
- className: "flex min-h-[220px] flex-col items-center justify-center gap-3 text-text-tertiary",
228
- children: [/* @__PURE__ */ s(a, { className: "h-7 w-7 animate-spin text-accent" }), /* @__PURE__ */ s("span", {
229
- className: "text-sm",
230
- children: e
231
- })]
232
- }), A = ({ error: e, onRetry: t }) => /* @__PURE__ */ c("div", {
233
- className: "flex min-h-[220px] flex-col items-center justify-center gap-3 text-center",
234
- children: [
235
- /* @__PURE__ */ s(n, { className: "h-8 w-8 text-status-error-text" }),
236
- /* @__PURE__ */ s("p", {
237
- className: "max-w-md text-sm text-text-secondary",
238
- children: e instanceof Error ? e.message : "Something went wrong."
239
- }),
240
- t ? /* @__PURE__ */ s(l, {
241
- variant: "outline",
242
- size: "sm",
243
- onClick: t,
244
- children: "Try again"
245
- }) : null
246
- ]
247
- }), j = ({ title: e, description: t, icon: n, action: r }) => /* @__PURE__ */ c("div", {
260
+ });
261
+ }, N = ({ title: e, description: t, icon: n, action: r }) => /* @__PURE__ */ d("div", {
248
262
  className: "flex min-h-[240px] flex-col items-center justify-center gap-4 rounded-2xl border border-dashed border-border-seam bg-bg-surface/50 px-6 py-12 text-center",
249
263
  children: [
250
- n ? /* @__PURE__ */ s("div", {
264
+ n ? /* @__PURE__ */ u("div", {
251
265
  className: "flex h-14 w-14 items-center justify-center rounded-2xl bg-bg-sunken text-text-tertiary",
252
266
  children: n
253
267
  }) : null,
254
- /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
268
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
255
269
  className: "text-sm font-medium text-text-primary",
256
270
  children: e
257
- }), t ? /* @__PURE__ */ s("p", {
271
+ }), t ? /* @__PURE__ */ u("p", {
258
272
  className: "mt-1 max-w-sm text-sm text-text-tertiary",
259
273
  children: t
260
274
  }) : null] }),
261
275
  r
262
276
  ]
263
- }), M = ({ children: e }) => /* @__PURE__ */ s("div", {
277
+ }), P = ({ children: e }) => /* @__PURE__ */ u("div", {
264
278
  className: "overflow-x-auto rounded-xl border border-border-seam",
265
- children: /* @__PURE__ */ s("table", {
266
- className: "w-full min-w-[560px] text-left text-sm",
279
+ children: /* @__PURE__ */ u("table", {
280
+ className: "w-full min-w-[560px] text-start text-sm",
267
281
  children: e
268
282
  })
269
- }), N = ({ children: t, className: n }) => /* @__PURE__ */ s("th", {
283
+ }), F = ({ children: t, className: n }) => /* @__PURE__ */ u("th", {
270
284
  className: e("bg-bg-sunken px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-text-tertiary", n),
271
285
  children: t
272
- }), P = ({ children: t, className: n }) => /* @__PURE__ */ s("td", {
286
+ }), I = ({ children: t, className: n }) => /* @__PURE__ */ u("td", {
273
287
  className: e("border-t border-border-seam px-4 py-3 text-text-secondary", n),
274
288
  children: t
275
289
  });
276
290
  //#endregion
277
- export { D as Banner, j as Empty, A as ErrorState, S as Field, k as LoadingBlock, y as MetricCard, O as Modal, T as NativeSelect, v as PageHeader, b as SectionCard, _ as StatusPill, M as TableWrap, P as Td, w as TextArea, C as TextInput, N as Th, E as enumOptions, d as fmtDate, p as fmtHours, m as fmtMinutesAsHours, f as fmtMoney, u as humanize };
291
+ export { k as Banner, N as Empty, M as ErrorState, w as Field, j as LoadingBlock, x as MetricCard, A as Modal, D as NativeSelect, b as PageHeader, S as SectionCard, y as StatusPill, P as TableWrap, I as Td, E as TextArea, T as TextInput, F as Th, O as enumOptions, p as fmtDate, h as fmtHours, g as fmtMinutesAsHours, m as fmtMoney, t as humanize };
278
292
 
279
293
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","names":[],"sources":["../../../src/proserviceworld/components/ui.tsx"],"sourcesContent":["/**\n * ProServiceWorld shared UI kit.\n *\n * Self-contained, token-driven primitives (no raw colors) shared by every page:\n * page header, metric cards, section cards, a mobile-friendly modal, token-styled\n * native form controls, status pills, inline banners, and empty/loading/error\n * states. Actions reuse the fe-libs Button (brand variants); everything else is\n * built from semantic tokens so theming works across light/dark/any theme.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { AlertCircle, CheckCircle2, Info, Loader2, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\nexport const humanize = (v: string | null | undefined): string =>\n (v ?? '')\n .toLowerCase()\n .replace(/_/g, ' ')\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n\nexport const fmtDate = (iso: string | null | undefined): string => {\n if (!iso) return '—';\n const d = new Date(iso);\n return Number.isNaN(d.getTime())\n ? '—'\n : d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n};\n\nexport const fmtMoney = (amount: number | null | undefined, currency = 'USD'): string => {\n const n = amount ?? 0;\n try {\n return new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(n);\n } catch {\n return `${currency} ${n.toLocaleString()}`;\n }\n};\n\nexport const fmtHours = (h: number | null | undefined): string =>\n `${(h ?? 0).toLocaleString(undefined, { maximumFractionDigits: 1 })}h`;\nexport const fmtMinutesAsHours = (m: number | null | undefined): string => fmtHours((m ?? 0) / 60);\n\n// ---------------------------------------------------------------------------\n// Status tone mapping\n// ---------------------------------------------------------------------------\nexport type Tone = 'neutral' | 'success' | 'warning' | 'danger' | 'info' | 'accent';\n\nconst TONE_CLASS: Record<Tone, string> = {\n neutral: 'bg-bg-sunken text-text-secondary',\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n danger: 'bg-status-error-bg-subtle text-status-error-text',\n info: 'bg-bg-sunken text-text-link',\n accent: 'bg-bg-sunken text-accent',\n};\n\nconst STATUS_TONE: Record<string, Tone> = {\n // clients / generic\n ACTIVE: 'success',\n PROSPECT: 'info',\n INACTIVE: 'neutral',\n ARCHIVED: 'neutral',\n // engagements\n PROPOSAL: 'info',\n ACCEPTED: 'accent',\n IN_PROGRESS: 'accent',\n REVIEW: 'warning',\n DELIVERED: 'success',\n INVOICED: 'success',\n CLOSED: 'neutral',\n CANCELLED: 'danger',\n // matters\n OPEN: 'accent',\n ON_HOLD: 'warning',\n // priority\n LOW: 'neutral',\n MEDIUM: 'info',\n HIGH: 'warning',\n CRITICAL: 'danger',\n // deliverable / doc\n DRAFT: 'neutral',\n INTERNAL_REVIEW: 'info',\n CLIENT_REVIEW: 'warning',\n REJECTED: 'danger',\n FINAL: 'success',\n // time\n SUBMITTED: 'info',\n APPROVED: 'success',\n BILLED: 'accent',\n // invoice\n SENT: 'info',\n PAID: 'success',\n OVERDUE: 'danger',\n // compliance / conflict\n PENDING: 'warning',\n IN_REVIEW: 'info',\n PASSED: 'success',\n FAILED: 'danger',\n WAIVED: 'neutral',\n CLEAR: 'success',\n POTENTIAL_CONFLICT: 'warning',\n CONFLICT: 'danger',\n // milestone\n COMPLETED: 'success',\n // e-signatures (BOFF-4212)\n VIEWED: 'info',\n PARTIALLY_SIGNED: 'accent',\n SIGNED: 'success',\n DECLINED: 'danger',\n EXPIRED: 'neutral',\n // client portal (BOFF-4283)\n REVOKED: 'neutral',\n};\n\nexport const StatusPill: FC<{ status: string; className?: string }> = ({ status, className }) => (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium whitespace-nowrap',\n TONE_CLASS[STATUS_TONE[status] ?? 'neutral'],\n className\n )}\n >\n <span className=\"h-1.5 w-1.5 rounded-full bg-current opacity-70\" />\n {humanize(status)}\n </span>\n);\n\n// ---------------------------------------------------------------------------\n// Page header\n// ---------------------------------------------------------------------------\nexport const PageHeader: FC<{\n title: string;\n subtitle?: string;\n actions?: ReactNode;\n icon?: ReactNode;\n}> = ({ title, subtitle, actions, icon }) => (\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex items-start gap-3.5\">\n {icon ? (\n <div className=\"flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-bg-sunken text-accent\">\n {icon}\n </div>\n ) : null}\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight text-text-primary sm:text-3xl\">{title}</h1>\n {subtitle ? (\n <p className=\"mt-1.5 max-w-2xl text-sm leading-relaxed text-text-secondary\">{subtitle}</p>\n ) : null}\n </div>\n </div>\n {actions ? <div className=\"flex flex-wrap items-center gap-2\">{actions}</div> : null}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Metric card\n// ---------------------------------------------------------------------------\nexport const MetricCard: FC<{\n label: string;\n value: ReactNode;\n hint?: string;\n icon?: ReactNode;\n tone?: Tone;\n}> = ({ label, value, hint, icon, tone = 'neutral' }) => (\n <div className=\"vc-lift-on-hover rounded-2xl border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium uppercase tracking-wider text-text-tertiary\">\n {label}\n </span>\n {icon ? (\n <span\n className={cn('flex h-9 w-9 items-center justify-center rounded-full', TONE_CLASS[tone])}\n >\n {icon}\n </span>\n ) : null}\n </div>\n <div className=\"mt-3 text-2xl font-semibold tracking-tight text-text-primary sm:text-3xl\">\n {value}\n </div>\n {hint ? <div className=\"mt-1 text-xs text-text-tertiary\">{hint}</div> : null}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Section card\n// ---------------------------------------------------------------------------\nexport const SectionCard: FC<{\n title?: string;\n description?: string;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n}> = ({ title, description, action, children, className }) => (\n <section\n className={cn('rounded-2xl border border-border-seam bg-bg-surface shadow-sm', className)}\n >\n {(title || action) && (\n <header className=\"flex items-center justify-between gap-3 border-b border-border-seam px-5 py-3.5\">\n <div>\n {title ? <h2 className=\"text-sm font-semibold text-text-primary\">{title}</h2> : null}\n {description ? <p className=\"mt-0.5 text-xs text-text-tertiary\">{description}</p> : null}\n </div>\n {action}\n </header>\n )}\n <div className=\"p-5\">{children}</div>\n </section>\n);\n\n// ---------------------------------------------------------------------------\n// Form controls (token-styled native elements — reliable inside modals)\n// ---------------------------------------------------------------------------\nconst controlClass =\n 'w-full rounded-lg border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary focus:border-accent focus:outline-none focus:ring-2 focus:ring-accent/30 disabled:opacity-50';\n\nexport const Field: FC<{\n label: string;\n required?: boolean;\n hint?: string;\n children: ReactNode;\n className?: string;\n}> = ({ label, required, hint, children, className }) => (\n <label className={cn('block', className)}>\n <span className=\"mb-1 block text-xs font-medium text-text-secondary\">\n {label}\n {required ? <span className=\"text-status-error-text\"> *</span> : null}\n </span>\n {children}\n {hint ? <span className=\"mt-1 block text-xs text-text-tertiary\">{hint}</span> : null}\n </label>\n);\n\nexport const TextInput: FC<React.InputHTMLAttributes<HTMLInputElement>> = ({\n className,\n ...props\n}) => <input className={cn(controlClass, className)} {...props} />;\nexport const TextArea: FC<React.TextareaHTMLAttributes<HTMLTextAreaElement>> = ({\n className,\n ...props\n}) => <textarea className={cn(controlClass, 'min-h-[80px] resize-y', className)} {...props} />;\nexport const NativeSelect: FC<React.SelectHTMLAttributes<HTMLSelectElement>> = ({\n className,\n children,\n ...props\n}) => (\n <select className={cn(controlClass, 'appearance-none pr-8', className)} {...props}>\n {children}\n </select>\n);\n\n/** Turn an enum-value list into <option>s with humanized labels. */\nexport const enumOptions = (values: readonly string[]): ReactNode =>\n values.map((v) => (\n <option key={v} value={v}>\n {humanize(v)}\n </option>\n ));\n\n// ---------------------------------------------------------------------------\n// Inline banner\n// ---------------------------------------------------------------------------\nexport const Banner: FC<{\n tone?: 'success' | 'danger' | 'info';\n children: ReactNode;\n onClose?: () => void;\n}> = ({ tone = 'info', children, onClose }) => {\n const Icon = tone === 'success' ? CheckCircle2 : tone === 'danger' ? AlertCircle : Info;\n const toneClass =\n tone === 'success'\n ? TONE_CLASS.success\n : tone === 'danger'\n ? TONE_CLASS.danger\n : 'bg-bg-sunken text-text-secondary';\n return (\n <div className={cn('flex items-start gap-2 rounded-lg px-3 py-2 text-sm', toneClass)}>\n <Icon className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <div className=\"flex-1\">{children}</div>\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"opacity-70 hover:opacity-100\"\n aria-label=\"Dismiss\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Modal (centered on desktop, full-height sheet on mobile)\n// ---------------------------------------------------------------------------\nexport const Modal: FC<{\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n footer?: ReactNode;\n wide?: boolean;\n}> = ({ open, onClose, title, children, footer, wide }) => {\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', onKey);\n document.body.style.overflow = 'hidden';\n return () => {\n document.removeEventListener('keydown', onKey);\n document.body.style.overflow = '';\n };\n }, [open, onClose]);\n\n if (!open) return null;\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-end justify-center sm:items-center\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\n <div\n className={cn(\n 'relative flex max-h-[92vh] w-full flex-col overflow-hidden rounded-t-2xl border border-border-seam bg-bg-surface shadow-xl sm:max-h-[88vh] sm:rounded-2xl',\n wide ? 'sm:max-w-3xl' : 'sm:max-w-lg'\n )}\n >\n <header className=\"flex items-center justify-between border-b border-border-seam px-4 py-3\">\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"rounded-lg p-1 text-text-tertiary hover:bg-bg-sunken hover:text-text-primary\"\n aria-label=\"Close\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </header>\n <div className=\"flex-1 overflow-y-auto px-4 py-4\">{children}</div>\n {footer ? (\n <footer className=\"flex items-center justify-end gap-2 border-t border-border-seam px-4 py-3\">\n {footer}\n </footer>\n ) : null}\n </div>\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// States\n// ---------------------------------------------------------------------------\nexport const LoadingBlock: FC<{ label?: string }> = ({ label = 'Loading…' }) => (\n <div className=\"flex min-h-[220px] flex-col items-center justify-center gap-3 text-text-tertiary\">\n <Loader2 className=\"h-7 w-7 animate-spin text-accent\" />\n <span className=\"text-sm\">{label}</span>\n </div>\n);\n\nexport const ErrorState: FC<{ error: unknown; onRetry?: () => void }> = ({ error, onRetry }) => (\n <div className=\"flex min-h-[220px] flex-col items-center justify-center gap-3 text-center\">\n <AlertCircle className=\"h-8 w-8 text-status-error-text\" />\n <p className=\"max-w-md text-sm text-text-secondary\">\n {error instanceof Error ? error.message : 'Something went wrong.'}\n </p>\n {onRetry ? (\n <Button variant=\"outline\" size=\"sm\" onClick={onRetry}>\n Try again\n </Button>\n ) : null}\n </div>\n);\n\nexport const Empty: FC<{\n title: string;\n description?: string;\n icon?: ReactNode;\n action?: ReactNode;\n}> = ({ title, description, icon, action }) => (\n <div className=\"flex min-h-[240px] flex-col items-center justify-center gap-4 rounded-2xl border border-dashed border-border-seam bg-bg-surface/50 px-6 py-12 text-center\">\n {icon ? (\n <div className=\"flex h-14 w-14 items-center justify-center rounded-2xl bg-bg-sunken text-text-tertiary\">\n {icon}\n </div>\n ) : null}\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n {description ? (\n <p className=\"mt-1 max-w-sm text-sm text-text-tertiary\">{description}</p>\n ) : null}\n </div>\n {action}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Simple responsive table wrapper (scrolls horizontally on small screens)\n// ---------------------------------------------------------------------------\nexport const TableWrap: FC<{ children: ReactNode }> = ({ children }) => (\n <div className=\"overflow-x-auto rounded-xl border border-border-seam\">\n <table className=\"w-full min-w-[560px] text-left text-sm\">{children}</table>\n </div>\n);\nexport const Th: FC<{ children?: ReactNode; className?: string }> = ({ children, className }) => (\n <th\n className={cn(\n 'bg-bg-sunken px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-text-tertiary',\n className\n )}\n >\n {children}\n </th>\n);\nexport const Td: FC<{ children?: ReactNode; className?: string }> = ({ children, className }) => (\n <td className={cn('border-t border-border-seam px-4 py-3 text-text-secondary', className)}>\n {children}\n </td>\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","names":[],"sources":["../../../src/proserviceworld/components/ui.tsx"],"sourcesContent":["/**\n * ProServiceWorld shared UI kit.\n *\n * Self-contained, token-driven primitives (no raw colors) shared by every page:\n * page header, metric cards, section cards, a mobile-friendly modal, token-styled\n * native form controls, status pills, inline banners, and empty/loading/error\n * states. Actions reuse the fe-libs Button (brand variants); everything else is\n * built from semantic tokens so theming works across light/dark/any theme.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { AlertCircle, CheckCircle2, Info, Loader2, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { humanize } from '../utils/humanize';\nimport { useEnumLabel, useTr } from '../hooks/useTr';\n\nexport { humanize };\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\nexport const fmtDate = (iso: string | null | undefined): string => {\n if (!iso) return '—';\n const d = new Date(iso);\n return Number.isNaN(d.getTime())\n ? '—'\n : d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n};\n\nexport const fmtMoney = (amount: number | null | undefined, currency = 'USD'): string => {\n const n = amount ?? 0;\n try {\n return new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(n);\n } catch {\n return `${currency} ${n.toLocaleString()}`;\n }\n};\n\nexport const fmtHours = (h: number | null | undefined): string =>\n `${(h ?? 0).toLocaleString(undefined, { maximumFractionDigits: 1 })}h`;\nexport const fmtMinutesAsHours = (m: number | null | undefined): string => fmtHours((m ?? 0) / 60);\n\n// ---------------------------------------------------------------------------\n// Status tone mapping\n// ---------------------------------------------------------------------------\nexport type Tone = 'neutral' | 'success' | 'warning' | 'danger' | 'info' | 'accent';\n\nconst TONE_CLASS: Record<Tone, string> = {\n neutral: 'bg-bg-sunken text-text-secondary',\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n danger: 'bg-status-error-bg-subtle text-status-error-text',\n info: 'bg-bg-sunken text-text-link',\n accent: 'bg-bg-sunken text-accent',\n};\n\nconst STATUS_TONE: Record<string, Tone> = {\n // clients / generic\n ACTIVE: 'success',\n PROSPECT: 'info',\n INACTIVE: 'neutral',\n ARCHIVED: 'neutral',\n // engagements\n PROPOSAL: 'info',\n ACCEPTED: 'accent',\n IN_PROGRESS: 'accent',\n REVIEW: 'warning',\n DELIVERED: 'success',\n INVOICED: 'success',\n CLOSED: 'neutral',\n CANCELLED: 'danger',\n // matters\n OPEN: 'accent',\n ON_HOLD: 'warning',\n // priority\n LOW: 'neutral',\n MEDIUM: 'info',\n HIGH: 'warning',\n CRITICAL: 'danger',\n // deliverable / doc\n DRAFT: 'neutral',\n INTERNAL_REVIEW: 'info',\n CLIENT_REVIEW: 'warning',\n REJECTED: 'danger',\n FINAL: 'success',\n // time\n SUBMITTED: 'info',\n APPROVED: 'success',\n BILLED: 'accent',\n // invoice\n SENT: 'info',\n PAID: 'success',\n OVERDUE: 'danger',\n // compliance / conflict\n PENDING: 'warning',\n IN_REVIEW: 'info',\n PASSED: 'success',\n FAILED: 'danger',\n WAIVED: 'neutral',\n CLEAR: 'success',\n POTENTIAL_CONFLICT: 'warning',\n CONFLICT: 'danger',\n // milestone\n COMPLETED: 'success',\n // e-signatures (BOFF-4212)\n VIEWED: 'info',\n PARTIALLY_SIGNED: 'accent',\n SIGNED: 'success',\n DECLINED: 'danger',\n EXPIRED: 'neutral',\n // client portal (BOFF-4283)\n REVOKED: 'neutral',\n};\n\nexport const StatusPill: FC<{ status: string; className?: string }> = ({ status, className }) => {\n const enumLabel = useEnumLabel();\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium whitespace-nowrap',\n TONE_CLASS[STATUS_TONE[status] ?? 'neutral'],\n className\n )}\n >\n <span className=\"h-1.5 w-1.5 rounded-full bg-current opacity-70\" />\n {enumLabel(status)}\n </span>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Page header\n// ---------------------------------------------------------------------------\nexport const PageHeader: FC<{\n title: string;\n subtitle?: string;\n actions?: ReactNode;\n icon?: ReactNode;\n}> = ({ title, subtitle, actions, icon }) => (\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex items-start gap-3.5\">\n {icon ? (\n <div className=\"flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-bg-sunken text-accent\">\n {icon}\n </div>\n ) : null}\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight text-text-primary sm:text-3xl\">{title}</h1>\n {subtitle ? (\n <p className=\"mt-1.5 max-w-2xl text-sm leading-relaxed text-text-secondary\">{subtitle}</p>\n ) : null}\n </div>\n </div>\n {actions ? <div className=\"flex flex-wrap items-center gap-2\">{actions}</div> : null}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Metric card\n// ---------------------------------------------------------------------------\nexport const MetricCard: FC<{\n label: string;\n value: ReactNode;\n hint?: string;\n icon?: ReactNode;\n tone?: Tone;\n}> = ({ label, value, hint, icon, tone = 'neutral' }) => (\n <div className=\"vc-lift-on-hover rounded-2xl border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium uppercase tracking-wider text-text-tertiary\">\n {label}\n </span>\n {icon ? (\n <span\n className={cn('flex h-9 w-9 items-center justify-center rounded-full', TONE_CLASS[tone])}\n >\n {icon}\n </span>\n ) : null}\n </div>\n <div className=\"mt-3 text-2xl font-semibold tracking-tight text-text-primary sm:text-3xl\">\n {value}\n </div>\n {hint ? <div className=\"mt-1 text-xs text-text-tertiary\">{hint}</div> : null}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Section card\n// ---------------------------------------------------------------------------\nexport const SectionCard: FC<{\n title?: string;\n description?: string;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n}> = ({ title, description, action, children, className }) => (\n <section\n className={cn('rounded-2xl border border-border-seam bg-bg-surface shadow-sm', className)}\n >\n {(title || action) && (\n <header className=\"flex items-center justify-between gap-3 border-b border-border-seam px-5 py-3.5\">\n <div>\n {title ? <h2 className=\"text-sm font-semibold text-text-primary\">{title}</h2> : null}\n {description ? <p className=\"mt-0.5 text-xs text-text-tertiary\">{description}</p> : null}\n </div>\n {action}\n </header>\n )}\n <div className=\"p-5\">{children}</div>\n </section>\n);\n\n// ---------------------------------------------------------------------------\n// Form controls (token-styled native elements — reliable inside modals)\n// ---------------------------------------------------------------------------\nconst controlClass =\n 'w-full rounded-lg border border-border-seam bg-bg-canvas px-3 py-2 text-sm text-text-primary placeholder:text-text-tertiary focus:border-accent focus:outline-none focus:ring-2 focus:ring-accent/30 disabled:opacity-50';\n\nexport const Field: FC<{\n label: string;\n required?: boolean;\n hint?: string;\n children: ReactNode;\n className?: string;\n}> = ({ label, required, hint, children, className }) => (\n <label className={cn('block', className)}>\n <span className=\"mb-1 block text-xs font-medium text-text-secondary\">\n {label}\n {required ? <span className=\"text-status-error-text\"> *</span> : null}\n </span>\n {children}\n {hint ? <span className=\"mt-1 block text-xs text-text-tertiary\">{hint}</span> : null}\n </label>\n);\n\nexport const TextInput: FC<React.InputHTMLAttributes<HTMLInputElement>> = ({\n className,\n ...props\n}) => <input className={cn(controlClass, className)} {...props} />;\nexport const TextArea: FC<React.TextareaHTMLAttributes<HTMLTextAreaElement>> = ({\n className,\n ...props\n}) => <textarea className={cn(controlClass, 'min-h-[80px] resize-y', className)} {...props} />;\nexport const NativeSelect: FC<React.SelectHTMLAttributes<HTMLSelectElement>> = ({\n className,\n children,\n ...props\n}) => (\n <select className={cn(controlClass, 'appearance-none pe-8', className)} {...props}>\n {children}\n </select>\n);\n\n/**\n * Turn an enum-value list into <option>s. Pass the `useEnumLabel()` function\n * to localize the labels; without it they are humanized English.\n */\nexport const enumOptions = (\n values: readonly string[],\n label: (value: string) => string = humanize\n): ReactNode =>\n values.map((v) => (\n <option key={v} value={v}>\n {label(v)}\n </option>\n ));\n\n// ---------------------------------------------------------------------------\n// Inline banner\n// ---------------------------------------------------------------------------\nexport const Banner: FC<{\n tone?: 'success' | 'danger' | 'info';\n children: ReactNode;\n onClose?: () => void;\n}> = ({ tone = 'info', children, onClose }) => {\n const tr = useTr();\n const Icon = tone === 'success' ? CheckCircle2 : tone === 'danger' ? AlertCircle : Info;\n const toneClass =\n tone === 'success'\n ? TONE_CLASS.success\n : tone === 'danger'\n ? TONE_CLASS.danger\n : 'bg-bg-sunken text-text-secondary';\n return (\n <div className={cn('flex items-start gap-2 rounded-lg px-3 py-2 text-sm', toneClass)}>\n <Icon className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <div className=\"flex-1\">{children}</div>\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"opacity-70 hover:opacity-100\"\n aria-label={tr('psw.common.dismiss', 'Dismiss')}\n >\n <X className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Modal (centered on desktop, full-height sheet on mobile)\n// ---------------------------------------------------------------------------\nexport const Modal: FC<{\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n footer?: ReactNode;\n wide?: boolean;\n}> = ({ open, onClose, title, children, footer, wide }) => {\n const tr = useTr();\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', onKey);\n document.body.style.overflow = 'hidden';\n return () => {\n document.removeEventListener('keydown', onKey);\n document.body.style.overflow = '';\n };\n }, [open, onClose]);\n\n if (!open) return null;\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-end justify-center sm:items-center\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\n <div\n className={cn(\n 'relative flex max-h-[92vh] w-full flex-col overflow-hidden rounded-t-2xl border border-border-seam bg-bg-surface shadow-xl sm:max-h-[88vh] sm:rounded-2xl',\n wide ? 'sm:max-w-3xl' : 'sm:max-w-lg'\n )}\n >\n <header className=\"flex items-center justify-between border-b border-border-seam px-4 py-3\">\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"rounded-lg p-1 text-text-tertiary hover:bg-bg-sunken hover:text-text-primary\"\n aria-label={tr('psw.common.close', 'Close')}\n >\n <X className=\"h-5 w-5\" />\n </button>\n </header>\n <div className=\"flex-1 overflow-y-auto px-4 py-4\">{children}</div>\n {footer ? (\n <footer className=\"flex items-center justify-end gap-2 border-t border-border-seam px-4 py-3\">\n {footer}\n </footer>\n ) : null}\n </div>\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// States\n// ---------------------------------------------------------------------------\nexport const LoadingBlock: FC<{ label?: string }> = ({ label }) => {\n const tr = useTr();\n return (\n <div className=\"flex min-h-[220px] flex-col items-center justify-center gap-3 text-text-tertiary\">\n <Loader2 className=\"h-7 w-7 animate-spin text-accent\" />\n <span className=\"text-sm\">{label ?? tr('psw.common.loading', 'Loading…')}</span>\n </div>\n );\n};\n\nexport const ErrorState: FC<{ error: unknown; onRetry?: () => void }> = ({ error, onRetry }) => {\n const tr = useTr();\n return (\n <div className=\"flex min-h-[220px] flex-col items-center justify-center gap-3 text-center\">\n <AlertCircle className=\"h-8 w-8 text-status-error-text\" />\n <p className=\"max-w-md text-sm text-text-secondary\">\n {error instanceof Error ? error.message : tr('psw.common.error', 'Something went wrong.')}\n </p>\n {onRetry ? (\n <Button variant=\"outline\" size=\"sm\" onClick={onRetry}>\n {tr('psw.common.tryAgain', 'Try again')}\n </Button>\n ) : null}\n </div>\n );\n};\n\nexport const Empty: FC<{\n title: string;\n description?: string;\n icon?: ReactNode;\n action?: ReactNode;\n}> = ({ title, description, icon, action }) => (\n <div className=\"flex min-h-[240px] flex-col items-center justify-center gap-4 rounded-2xl border border-dashed border-border-seam bg-bg-surface/50 px-6 py-12 text-center\">\n {icon ? (\n <div className=\"flex h-14 w-14 items-center justify-center rounded-2xl bg-bg-sunken text-text-tertiary\">\n {icon}\n </div>\n ) : null}\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n {description ? (\n <p className=\"mt-1 max-w-sm text-sm text-text-tertiary\">{description}</p>\n ) : null}\n </div>\n {action}\n </div>\n);\n\n// ---------------------------------------------------------------------------\n// Simple responsive table wrapper (scrolls horizontally on small screens)\n// ---------------------------------------------------------------------------\nexport const TableWrap: FC<{ children: ReactNode }> = ({ children }) => (\n <div className=\"overflow-x-auto rounded-xl border border-border-seam\">\n <table className=\"w-full min-w-[560px] text-start text-sm\">{children}</table>\n </div>\n);\nexport const Th: FC<{ children?: ReactNode; className?: string }> = ({ children, className }) => (\n <th\n className={cn(\n 'bg-bg-sunken px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-text-tertiary',\n className\n )}\n >\n {children}\n </th>\n);\nexport const Td: FC<{ children?: ReactNode; className?: string }> = ({ children, className }) => (\n <td className={cn('border-t border-border-seam px-4 py-3 text-text-secondary', className)}>\n {children}\n </td>\n);\n"],"mappings":"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"}
@@ -262,6 +262,30 @@ export interface PswDashboardStats {
262
262
  revenueByMonth: PswMonthlyAmount[];
263
263
  trustHeldTotal: number;
264
264
  activeTrustAccounts: number;
265
+ workedValue: number;
266
+ billedValue: number;
267
+ realizationPct: number;
268
+ agedReceivables: PswAgedReceivables;
269
+ writeOffTotal: number;
270
+ }
271
+ export interface PswAgedReceivableBucket {
272
+ amount: number;
273
+ count: number;
274
+ }
275
+ export interface PswAgedReceivables {
276
+ current: PswAgedReceivableBucket;
277
+ thirty: PswAgedReceivableBucket;
278
+ sixty: PswAgedReceivableBucket;
279
+ ninetyPlus: PswAgedReceivableBucket;
280
+ }
281
+ export interface PswWriteOff {
282
+ id: string;
283
+ invoiceId: string | null;
284
+ timeEntryId: string | null;
285
+ amount: number;
286
+ reason: string;
287
+ actorId: string;
288
+ createdAt: string;
265
289
  }
266
290
  export type PswTrustAccountStatus = 'ACTIVE' | 'CLOSED';
267
291
  export type PswTrustTransactionType = 'DEPOSIT' | 'WITHDRAWAL' | 'TRANSFER_OUT' | 'ADJUSTMENT';
@@ -318,6 +342,9 @@ export interface PswTrustReconciliationReport {
318
342
  reconciledCount: number;
319
343
  }
320
344
  export declare function useDashboardStats(): import('@tanstack/react-query').UseQueryResult<NoInfer<PswDashboardStats>, Error>;
345
+ export declare function useWriteOffs(args?: {
346
+ pagination?: PswPagination;
347
+ }): import('@tanstack/react-query').UseQueryResult<NoInfer<PswWriteOff[]>, Error>;
321
348
  export declare function useTrustAccounts(args?: {
322
349
  status?: PswTrustAccountStatus;
323
350
  search?: string;
@@ -463,6 +490,7 @@ export declare function useInvoices(args?: {
463
490
  pagination?: PswPagination;
464
491
  }): import('@tanstack/react-query').UseQueryResult<NoInfer<PswConnection<PswInvoice>>, Error>;
465
492
  export declare function useCreateInvoice(): import('@tanstack/react-query').UseMutationResult<unknown, Error, Record<string, unknown>, unknown>;
493
+ export declare function useSendInvoice(): import('@tanstack/react-query').UseMutationResult<unknown, Error, string, unknown>;
466
494
  export declare function useMarkInvoicePaid(): import('@tanstack/react-query').UseMutationResult<unknown, Error, string, unknown>;
467
495
  export declare function useInvoice(id: string | null): import('@tanstack/react-query').UseQueryResult<NoInfer<PswInvoice | null>, Error>;
468
496
  export declare function useCancelInvoice(): import('@tanstack/react-query').UseMutationResult<unknown, Error, string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"useProServiceWorldApi.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/hooks/useProServiceWorldApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useProServiceWorldApi.d.ts","sourceRoot":"","sources":["../../../src/proserviceworld/hooks/useProServiceWorldApi.ts"],"names":[],"mappings":"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"}