@burdenoff/microfe-proserviceworld 2026.703.1 → 2026.706.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 (79) hide show
  1. package/dist/index.js +2 -3
  2. package/dist/node_modules/clsx/dist/clsx.js +18 -0
  3. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  4. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1716 -0
  5. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  6. package/dist/proserviceworld/ProServiceWorldRoot.js +92 -136
  7. package/dist/proserviceworld/ProServiceWorldRoot.js.map +1 -1
  8. package/dist/proserviceworld/ProServiceWorldRoutes.js +18 -26
  9. package/dist/proserviceworld/ProServiceWorldRoutes.js.map +1 -1
  10. package/dist/proserviceworld/components/DiscussionThread.js +76 -0
  11. package/dist/proserviceworld/components/DiscussionThread.js.map +1 -0
  12. package/dist/proserviceworld/components/ui.js +273 -0
  13. package/dist/proserviceworld/components/ui.js.map +1 -0
  14. package/dist/proserviceworld/hooks/useEntityComments.js +56 -0
  15. package/dist/proserviceworld/hooks/useEntityComments.js.map +1 -0
  16. package/dist/proserviceworld/hooks/useFiles.js +45 -0
  17. package/dist/proserviceworld/hooks/useFiles.js.map +1 -0
  18. package/dist/proserviceworld/hooks/useProServiceWorldApi.js +416 -0
  19. package/dist/proserviceworld/hooks/useProServiceWorldApi.js.map +1 -0
  20. package/dist/proserviceworld/index.js +0 -1
  21. package/dist/proserviceworld/pages/AnalyticsPage.js +163 -475
  22. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  23. package/dist/proserviceworld/pages/ClientDetailPage.js +243 -0
  24. package/dist/proserviceworld/pages/ClientDetailPage.js.map +1 -0
  25. package/dist/proserviceworld/pages/ClientsPage.js +295 -0
  26. package/dist/proserviceworld/pages/ClientsPage.js.map +1 -0
  27. package/dist/proserviceworld/pages/CompliancePage.js +307 -0
  28. package/dist/proserviceworld/pages/CompliancePage.js.map +1 -0
  29. package/dist/proserviceworld/pages/ConflictsPage.js +234 -0
  30. package/dist/proserviceworld/pages/ConflictsPage.js.map +1 -0
  31. package/dist/proserviceworld/pages/DashboardPage.js +179 -632
  32. package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
  33. package/dist/proserviceworld/pages/DocumentsPage.js +235 -539
  34. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  35. package/dist/proserviceworld/pages/EngagementDetailPage.js +449 -0
  36. package/dist/proserviceworld/pages/EngagementDetailPage.js.map +1 -0
  37. package/dist/proserviceworld/pages/EngagementsPage.js +256 -0
  38. package/dist/proserviceworld/pages/EngagementsPage.js.map +1 -0
  39. package/dist/proserviceworld/pages/InvoicesPage.js +303 -0
  40. package/dist/proserviceworld/pages/InvoicesPage.js.map +1 -0
  41. package/dist/proserviceworld/pages/MattersPage.js +275 -0
  42. package/dist/proserviceworld/pages/MattersPage.js.map +1 -0
  43. package/dist/proserviceworld/pages/PracticeAreasPage.js +176 -0
  44. package/dist/proserviceworld/pages/PracticeAreasPage.js.map +1 -0
  45. package/dist/proserviceworld/pages/TimePage.js +310 -0
  46. package/dist/proserviceworld/pages/TimePage.js.map +1 -0
  47. package/dist/proserviceworld/utils/cn.js +10 -0
  48. package/dist/proserviceworld/utils/cn.js.map +1 -0
  49. package/dist/proserviceworld/utils/nav.js +11 -0
  50. package/dist/proserviceworld/utils/nav.js.map +1 -0
  51. package/package.json +1 -1
  52. package/dist/proserviceworld/pages/AdminReportsPage.js +0 -579
  53. package/dist/proserviceworld/pages/AdminReportsPage.js.map +0 -1
  54. package/dist/proserviceworld/pages/AdminUsersPage.js +0 -468
  55. package/dist/proserviceworld/pages/AdminUsersPage.js.map +0 -1
  56. package/dist/proserviceworld/pages/BookingsPage.js +0 -446
  57. package/dist/proserviceworld/pages/BookingsPage.js.map +0 -1
  58. package/dist/proserviceworld/pages/MessagesPage.js +0 -238
  59. package/dist/proserviceworld/pages/MessagesPage.js.map +0 -1
  60. package/dist/proserviceworld/pages/PaymentsPage.js +0 -537
  61. package/dist/proserviceworld/pages/PaymentsPage.js.map +0 -1
  62. package/dist/proserviceworld/pages/ProjectsPage.js +0 -627
  63. package/dist/proserviceworld/pages/ProjectsPage.js.map +0 -1
  64. package/dist/proserviceworld/pages/ProviderDetailPage.js +0 -538
  65. package/dist/proserviceworld/pages/ProviderDetailPage.js.map +0 -1
  66. package/dist/proserviceworld/pages/ProvidersPage.js +0 -347
  67. package/dist/proserviceworld/pages/ProvidersPage.js.map +0 -1
  68. package/dist/proserviceworld/pages/ReviewsPage.js +0 -356
  69. package/dist/proserviceworld/pages/ReviewsPage.js.map +0 -1
  70. package/dist/proserviceworld/pages/ServiceDetailsPage.js +0 -631
  71. package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +0 -1
  72. package/dist/proserviceworld/pages/ServicesPage.js +0 -344
  73. package/dist/proserviceworld/pages/ServicesPage.js.map +0 -1
  74. package/dist/proserviceworld/pages/VerificationPage.js +0 -370
  75. package/dist/proserviceworld/pages/VerificationPage.js.map +0 -1
  76. package/dist/proserviceworld/store/proserviceworldStore.js +0 -2490
  77. package/dist/proserviceworld/store/proserviceworldStore.js.map +0 -1
  78. package/dist/proserviceworld/utils/i18n.js +0 -15
  79. package/dist/proserviceworld/utils/i18n.js.map +0 -1
@@ -1,627 +0,0 @@
1
- import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
2
- import { useMemo as t, useState as n } from "react";
3
- import { AlertTriangle as r, BarChart3 as i, Calendar as a, CheckCircle2 as o, ChevronRight as s, Clock as c, DollarSign as l, Flag as u, Plus as d, Search as f, Tag as p, Target as m, Users as h } from "lucide-react";
4
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
5
- import { AuroraBackground as y, Badge as b, Button as x, Card as S, CardContent as C, CardHeader as w, CardTitle as T, GlassCard as E, GradientText as D, IllustratedEmptyState as O, Input as k, NextSteps as A, PagePurpose as j } from "@burdenoff/fe-libs/ui";
6
- //#region src/proserviceworld/pages/ProjectsPage.tsx
7
- var M = {
8
- planning: {
9
- label: "Planning",
10
- color: "text-status-warning-text",
11
- dot: "bg-status-warning-text"
12
- },
13
- active: {
14
- label: "Active",
15
- color: "text-accent-blue",
16
- dot: "bg-accent-blue"
17
- },
18
- on_hold: {
19
- label: "On Hold",
20
- color: "text-status-warning-text",
21
- dot: "bg-status-warning-text"
22
- },
23
- completed: {
24
- label: "Completed",
25
- color: "text-status-success-text",
26
- dot: "bg-status-success-text"
27
- },
28
- cancelled: {
29
- label: "Cancelled",
30
- color: "text-status-error-text",
31
- dot: "bg-status-error-text"
32
- }
33
- }, N = {
34
- low: {
35
- label: "Low",
36
- variant: "outline"
37
- },
38
- medium: {
39
- label: "Medium",
40
- variant: "secondary"
41
- },
42
- high: {
43
- label: "High",
44
- variant: "default"
45
- },
46
- critical: {
47
- label: "Critical",
48
- variant: "destructive"
49
- }
50
- }, P = {
51
- completed: "bg-status-success-text",
52
- in_progress: "bg-accent-blue",
53
- pending: "bg-bg-sunken",
54
- overdue: "bg-status-error-text"
55
- }, F = {
56
- completed: "text-status-success-text",
57
- in_progress: "text-accent-blue",
58
- pending: "text-text-secondary",
59
- overdue: "text-status-error-text"
60
- };
61
- function I() {
62
- let { projects: I } = e(), [L, R] = n(""), [z, B] = n("all"), [V, H] = n(I[0]?.id ?? ""), [U, W] = n("overview"), G = t(() => {
63
- let e = [...I];
64
- if (z !== "all" && (e = e.filter((e) => e.status === z)), L.trim()) {
65
- let t = L.toLowerCase();
66
- e = e.filter((e) => e.title.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
67
- }
68
- return e;
69
- }, [
70
- I,
71
- z,
72
- L
73
- ]), K = I.find((e) => e.id === V);
74
- return /* @__PURE__ */ v("div", {
75
- className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
76
- children: [
77
- /* @__PURE__ */ v("div", {
78
- className: "relative overflow-hidden rounded-card -mx-2 px-2 pt-1",
79
- children: [/* @__PURE__ */ _(y, { intensity: "subtle" }), /* @__PURE__ */ v("div", {
80
- className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
81
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h1", {
82
- className: "text-2xl font-semibold tracking-tight",
83
- children: /* @__PURE__ */ _(D, { children: "Projects" })
84
- }), /* @__PURE__ */ _("p", {
85
- className: "text-sm text-text-secondary",
86
- children: "Track progress and manage your professional service projects."
87
- })] }), /* @__PURE__ */ v(x, {
88
- size: "sm",
89
- children: [/* @__PURE__ */ _(d, { className: "mr-2 h-4 w-4" }), " New Project"]
90
- })]
91
- })]
92
- }),
93
- /* @__PURE__ */ _(j, {
94
- icon: /* @__PURE__ */ _(m, { className: "h-4 w-4" }),
95
- children: "Run your engagements from kickoff to delivery. Pick a project to see its budget, progress, milestones, timeline, and team in one place — so you always know what is on track, what is at risk, and what is due next."
96
- }),
97
- /* @__PURE__ */ _(A, {
98
- storageKey: "proserviceworld-projects",
99
- steps: [
100
- {
101
- id: "timeline",
102
- label: "Walk the timeline",
103
- description: "See milestones in chronological order to gauge momentum.",
104
- icon: /* @__PURE__ */ _(a, { className: "h-4 w-4" }),
105
- onClick: () => W("timeline")
106
- },
107
- {
108
- id: "milestones",
109
- label: "Drill into milestones",
110
- description: "Review deliverables, dependencies, and due dates.",
111
- icon: /* @__PURE__ */ _(u, { className: "h-4 w-4" }),
112
- onClick: () => W("milestones")
113
- },
114
- {
115
- id: "team",
116
- label: "Check the team",
117
- description: "See who is assigned and their roles.",
118
- icon: /* @__PURE__ */ _(h, { className: "h-4 w-4" }),
119
- onClick: () => W("team")
120
- }
121
- ]
122
- }),
123
- /* @__PURE__ */ v("div", {
124
- className: "grid gap-6 lg:grid-cols-3",
125
- children: [/* @__PURE__ */ v("div", {
126
- className: "space-y-4",
127
- children: [
128
- /* @__PURE__ */ v("div", {
129
- className: "relative",
130
- children: [/* @__PURE__ */ _(f, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _(k, {
131
- placeholder: "Search projects...",
132
- "aria-label": "Search projects",
133
- value: L,
134
- onChange: (e) => R(e.target.value),
135
- className: "pl-10"
136
- })]
137
- }),
138
- /* @__PURE__ */ _("div", {
139
- className: "flex flex-wrap gap-1",
140
- children: [
141
- "all",
142
- "active",
143
- "planning",
144
- "completed",
145
- "on_hold",
146
- "cancelled"
147
- ].map((e) => /* @__PURE__ */ _("button", {
148
- onClick: () => B(e),
149
- "aria-pressed": z === e,
150
- className: `rounded px-2 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${z === e ? "bg-accent-blue text-action-primary-text" : "bg-bg-sunken text-text-secondary hover:text-text-primary"}`,
151
- children: e === "all" ? "All" : M[e].label
152
- }, e))
153
- }),
154
- /* @__PURE__ */ _("div", {
155
- className: "space-y-2",
156
- children: G.length === 0 ? /* @__PURE__ */ _(O, {
157
- illustration: L || z !== "all" ? "empty-search" : "empty-data",
158
- title: "No projects found",
159
- description: "Try adjusting your search or filters."
160
- }) : G.map((e) => {
161
- let t = M[e.status];
162
- return /* @__PURE__ */ v("button", {
163
- onClick: () => {
164
- H(e.id), W("overview");
165
- },
166
- "aria-pressed": V === e.id,
167
- className: `w-full rounded-lg border p-3 text-left transition-shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${V === e.id ? "border-accent-blue bg-accent-blue-subtle" : "border-border-seam hover:shadow-pop"}`,
168
- children: [
169
- /* @__PURE__ */ v("div", {
170
- className: "flex items-center justify-between",
171
- children: [/* @__PURE__ */ _("h3", {
172
- className: "font-medium text-sm truncate pr-2",
173
- children: e.title
174
- }), /* @__PURE__ */ _(s, { className: "h-4 w-4 shrink-0 text-text-secondary" })]
175
- }),
176
- /* @__PURE__ */ v("div", {
177
- className: "mt-2 flex items-center gap-2",
178
- children: [/* @__PURE__ */ _(b, {
179
- variant: N[e.priority].variant,
180
- className: "text-xs",
181
- children: e.priority
182
- }), /* @__PURE__ */ v("span", {
183
- className: `flex items-center gap-1 text-xs ${t.color}`,
184
- children: [/* @__PURE__ */ _("span", { className: `h-1.5 w-1.5 rounded-full ${t.dot} ${e.status === "active" ? "motion-safe:animate-vc-glow-pulse" : ""}` }), t.label]
185
- })]
186
- }),
187
- /* @__PURE__ */ v("div", {
188
- className: "mt-2",
189
- children: [/* @__PURE__ */ v("div", {
190
- className: "flex items-center justify-between text-xs text-text-secondary",
191
- children: [/* @__PURE__ */ _("span", { children: "Progress" }), /* @__PURE__ */ v("span", {
192
- className: "tabular-nums",
193
- children: [e.progress, "%"]
194
- })]
195
- }), /* @__PURE__ */ _("div", {
196
- className: "mt-1 h-1.5 overflow-hidden rounded-full bg-bg-sunken",
197
- children: /* @__PURE__ */ _("div", {
198
- className: "h-1.5 rounded-full bg-accent-blue transition-all",
199
- style: { width: `${e.progress}%` }
200
- })
201
- })]
202
- })
203
- ]
204
- }, e.id);
205
- })
206
- })
207
- ]
208
- }), /* @__PURE__ */ _("div", {
209
- className: "space-y-4 lg:col-span-2",
210
- children: K ? /* @__PURE__ */ v(g, { children: [
211
- /* @__PURE__ */ _(E, {
212
- treatment: "insight",
213
- className: "border-border-seam",
214
- children: /* @__PURE__ */ v(C, {
215
- className: "pt-6",
216
- children: [
217
- /* @__PURE__ */ v("div", {
218
- className: "flex flex-wrap items-start justify-between gap-4",
219
- children: [/* @__PURE__ */ v("div", {
220
- className: "space-y-2",
221
- children: [
222
- /* @__PURE__ */ v("div", {
223
- className: "flex items-center gap-2",
224
- children: [/* @__PURE__ */ v(b, {
225
- variant: N[K.priority].variant,
226
- children: [K.priority, " priority"]
227
- }), /* @__PURE__ */ _("span", {
228
- className: `text-sm font-medium ${M[K.status].color}`,
229
- children: M[K.status].label
230
- })]
231
- }),
232
- /* @__PURE__ */ _("h2", {
233
- className: "text-xl font-bold tracking-tight",
234
- children: K.title
235
- }),
236
- /* @__PURE__ */ _("p", {
237
- className: "text-sm text-text-secondary",
238
- children: K.description
239
- })
240
- ]
241
- }), /* @__PURE__ */ v("div", {
242
- className: "text-right",
243
- children: [
244
- /* @__PURE__ */ _("p", {
245
- className: "text-sm text-text-secondary",
246
- children: "Budget"
247
- }),
248
- /* @__PURE__ */ v("p", {
249
- className: "text-xl font-bold tabular-nums",
250
- children: ["$", K.budget.toLocaleString()]
251
- }),
252
- /* @__PURE__ */ v("p", {
253
- className: "text-xs text-text-secondary tabular-nums",
254
- children: [
255
- "Spent: $",
256
- K.spent.toLocaleString(),
257
- " (",
258
- Math.round(K.spent / K.budget * 100),
259
- "%)"
260
- ]
261
- })
262
- ]
263
- })]
264
- }),
265
- /* @__PURE__ */ v("div", {
266
- className: "mt-4",
267
- children: [/* @__PURE__ */ v("div", {
268
- className: "flex items-center justify-between text-sm",
269
- children: [/* @__PURE__ */ _("span", {
270
- className: "text-text-secondary",
271
- children: "Overall Progress"
272
- }), /* @__PURE__ */ v("span", {
273
- className: "font-medium tabular-nums",
274
- children: [K.progress, "%"]
275
- })]
276
- }), /* @__PURE__ */ _("div", {
277
- className: "mt-1 h-3 overflow-hidden rounded-full bg-bg-sunken",
278
- children: /* @__PURE__ */ _("div", {
279
- className: "h-3 rounded-full bg-accent-blue transition-all",
280
- style: { width: `${K.progress}%` }
281
- })
282
- })]
283
- }),
284
- /* @__PURE__ */ v("div", {
285
- className: "mt-4 flex flex-wrap gap-4 text-sm",
286
- children: [
287
- /* @__PURE__ */ v("span", {
288
- className: "flex items-center gap-1 text-text-secondary",
289
- children: [
290
- /* @__PURE__ */ _(a, { className: "h-4 w-4" }),
291
- " ",
292
- K.startDate,
293
- " -",
294
- " ",
295
- K.endDate
296
- ]
297
- }),
298
- /* @__PURE__ */ v("span", {
299
- className: "flex items-center gap-1 text-text-secondary",
300
- children: [
301
- /* @__PURE__ */ _(h, { className: "h-4 w-4" }),
302
- /* @__PURE__ */ _("span", {
303
- className: "tabular-nums",
304
- children: K.teamMembers.length
305
- }),
306
- " ",
307
- "members"
308
- ]
309
- }),
310
- /* @__PURE__ */ v("span", {
311
- className: "flex items-center gap-1 text-text-secondary",
312
- children: [
313
- /* @__PURE__ */ _(m, { className: "h-4 w-4" }),
314
- /* @__PURE__ */ _("span", {
315
- className: "tabular-nums",
316
- children: K.milestones.length
317
- }),
318
- " ",
319
- "milestones"
320
- ]
321
- })
322
- ]
323
- }),
324
- K.tags.length > 0 && /* @__PURE__ */ v("div", {
325
- className: "mt-3 flex flex-wrap items-center gap-2",
326
- children: [/* @__PURE__ */ _(p, { className: "h-4 w-4 text-text-secondary" }), K.tags.map((e) => /* @__PURE__ */ _(b, {
327
- variant: "outline",
328
- className: "text-xs",
329
- children: e
330
- }, e))]
331
- })
332
- ]
333
- })
334
- }),
335
- /* @__PURE__ */ _("div", {
336
- className: "flex gap-1 border-b border-border-seam",
337
- children: [
338
- {
339
- key: "overview",
340
- label: "Overview"
341
- },
342
- {
343
- key: "timeline",
344
- label: "Timeline"
345
- },
346
- {
347
- key: "milestones",
348
- label: "Milestones"
349
- },
350
- {
351
- key: "team",
352
- label: "Team"
353
- }
354
- ].map(({ key: e, label: t }) => /* @__PURE__ */ _("button", {
355
- onClick: () => W(e),
356
- "aria-pressed": U === e,
357
- className: `border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${U === e ? "border-accent-blue text-accent-blue" : "border-transparent text-text-secondary hover:text-text-primary"}`,
358
- children: t
359
- }, e))
360
- }),
361
- U === "overview" && /* @__PURE__ */ v("div", {
362
- className: "grid gap-4 sm:grid-cols-2",
363
- children: [/* @__PURE__ */ v(E, {
364
- treatment: "metric",
365
- className: "border-border-seam",
366
- children: [/* @__PURE__ */ _(w, { children: /* @__PURE__ */ v(T, {
367
- className: "text-base flex items-center gap-2",
368
- children: [/* @__PURE__ */ _(l, { className: "h-4 w-4" }), " Budget Overview"]
369
- }) }), /* @__PURE__ */ v(C, {
370
- className: "space-y-3",
371
- children: [
372
- /* @__PURE__ */ v("div", {
373
- className: "flex justify-between text-sm",
374
- children: [/* @__PURE__ */ _("span", {
375
- className: "text-text-secondary",
376
- children: "Total Budget"
377
- }), /* @__PURE__ */ v("span", {
378
- className: "font-medium tabular-nums",
379
- children: ["$", K.budget.toLocaleString()]
380
- })]
381
- }),
382
- /* @__PURE__ */ v("div", {
383
- className: "flex justify-between text-sm",
384
- children: [/* @__PURE__ */ _("span", {
385
- className: "text-text-secondary",
386
- children: "Spent"
387
- }), /* @__PURE__ */ v("span", {
388
- className: "font-medium tabular-nums",
389
- children: ["$", K.spent.toLocaleString()]
390
- })]
391
- }),
392
- /* @__PURE__ */ v("div", {
393
- className: "flex justify-between text-sm",
394
- children: [/* @__PURE__ */ _("span", {
395
- className: "text-text-secondary",
396
- children: "Remaining"
397
- }), /* @__PURE__ */ v("span", {
398
- className: "font-medium text-status-success-text tabular-nums",
399
- children: ["$", (K.budget - K.spent).toLocaleString()]
400
- })]
401
- }),
402
- /* @__PURE__ */ _("div", {
403
- className: "h-2 overflow-hidden rounded-full bg-bg-sunken",
404
- children: /* @__PURE__ */ _("div", {
405
- className: "h-2 rounded-full bg-accent-blue",
406
- style: { width: `${Math.round(K.spent / K.budget * 100)}%` }
407
- })
408
- })
409
- ]
410
- })]
411
- }), /* @__PURE__ */ v(E, {
412
- treatment: "metric",
413
- className: "border-border-seam",
414
- children: [/* @__PURE__ */ _(w, { children: /* @__PURE__ */ v(T, {
415
- className: "text-base flex items-center gap-2",
416
- children: [/* @__PURE__ */ _(i, { className: "h-4 w-4" }), " Milestone Summary"]
417
- }) }), /* @__PURE__ */ _(C, {
418
- className: "space-y-3",
419
- children: [
420
- "completed",
421
- "in_progress",
422
- "pending",
423
- "overdue"
424
- ].map((e) => {
425
- let t = K.milestones.filter((t) => t.status === e).length;
426
- return /* @__PURE__ */ v("div", {
427
- className: "flex items-center justify-between text-sm",
428
- children: [/* @__PURE__ */ v("span", {
429
- className: "flex items-center gap-2 text-text-secondary capitalize",
430
- children: [/* @__PURE__ */ _("span", { className: `h-1.5 w-1.5 rounded-full ${P[e]}` }), e.replace("_", " ")]
431
- }), /* @__PURE__ */ _("span", {
432
- className: "font-medium tabular-nums",
433
- children: t
434
- })]
435
- }, e);
436
- })
437
- })]
438
- })]
439
- }),
440
- U === "timeline" && /* @__PURE__ */ _(S, {
441
- className: "border-border-seam",
442
- children: /* @__PURE__ */ _(C, {
443
- className: "pt-6",
444
- children: /* @__PURE__ */ _("div", {
445
- className: "relative space-y-0",
446
- children: K.milestones.map((e, t) => /* @__PURE__ */ v("div", {
447
- className: "relative flex gap-4 pb-8",
448
- children: [
449
- t !== K.milestones.length - 1 && /* @__PURE__ */ _("div", { className: "absolute left-[11px] top-6 h-full w-0.5 bg-border-seam" }),
450
- /* @__PURE__ */ v("div", {
451
- className: `relative z-10 mt-1 h-6 w-6 shrink-0 rounded-full ${P[e.status]} flex items-center justify-center`,
452
- children: [e.status === "completed" && /* @__PURE__ */ _(o, { className: "h-4 w-4 text-white" }), e.status === "in_progress" && /* @__PURE__ */ _(c, { className: "h-4 w-4 text-white" })]
453
- }),
454
- /* @__PURE__ */ v("div", {
455
- className: "flex-1",
456
- children: [
457
- /* @__PURE__ */ v("div", {
458
- className: "flex items-center gap-2",
459
- children: [/* @__PURE__ */ _("h4", {
460
- className: "font-medium",
461
- children: e.title
462
- }), /* @__PURE__ */ _(b, {
463
- variant: N[e.priority].variant,
464
- className: "text-xs",
465
- children: e.priority
466
- })]
467
- }),
468
- /* @__PURE__ */ _("p", {
469
- className: "mt-1 text-sm text-text-secondary",
470
- children: e.description
471
- }),
472
- /* @__PURE__ */ v("div", {
473
- className: "mt-2 flex flex-wrap gap-3 text-xs text-text-secondary",
474
- children: [/* @__PURE__ */ v("span", {
475
- className: "flex items-center gap-1",
476
- children: [
477
- /* @__PURE__ */ _(a, { className: "h-3 w-3" }),
478
- " Due: ",
479
- e.dueDate
480
- ]
481
- }), e.completedAt && /* @__PURE__ */ v("span", {
482
- className: "flex items-center gap-1 text-status-success-text",
483
- children: [
484
- /* @__PURE__ */ _(o, { className: "h-3 w-3" }),
485
- " Completed:",
486
- " ",
487
- e.completedAt
488
- ]
489
- })]
490
- })
491
- ]
492
- })
493
- ]
494
- }, e.id))
495
- })
496
- })
497
- }),
498
- U === "milestones" && /* @__PURE__ */ _("div", {
499
- className: "space-y-3",
500
- children: K.milestones.map((e) => /* @__PURE__ */ _(S, {
501
- className: "border-border-seam",
502
- children: /* @__PURE__ */ _(C, {
503
- className: "pt-4",
504
- children: /* @__PURE__ */ v("div", {
505
- className: "flex items-start gap-3",
506
- children: [/* @__PURE__ */ _({
507
- completed: o,
508
- in_progress: c,
509
- pending: m,
510
- overdue: r
511
- }[e.status] ?? m, { className: `mt-0.5 h-5 w-5 ${F[e.status]}` }), /* @__PURE__ */ v("div", {
512
- className: "flex-1",
513
- children: [
514
- /* @__PURE__ */ v("div", {
515
- className: "flex items-center gap-2",
516
- children: [/* @__PURE__ */ _("h4", {
517
- className: "font-medium",
518
- children: e.title
519
- }), /* @__PURE__ */ _(b, {
520
- variant: N[e.priority].variant,
521
- className: "text-xs",
522
- children: e.priority
523
- })]
524
- }),
525
- /* @__PURE__ */ _("p", {
526
- className: "mt-1 text-sm text-text-secondary",
527
- children: e.description
528
- }),
529
- e.deliverables.length > 0 && /* @__PURE__ */ v("div", {
530
- className: "mt-3",
531
- children: [/* @__PURE__ */ _("p", {
532
- className: "text-xs font-medium text-text-secondary",
533
- children: "Deliverables"
534
- }), /* @__PURE__ */ _("div", {
535
- className: "mt-1 flex flex-wrap gap-1",
536
- children: e.deliverables.map((e) => /* @__PURE__ */ _(b, {
537
- variant: "outline",
538
- className: "text-xs",
539
- children: e
540
- }, e))
541
- })]
542
- }),
543
- /* @__PURE__ */ v("div", {
544
- className: "mt-3 flex flex-wrap gap-4 text-xs text-text-secondary",
545
- children: [
546
- /* @__PURE__ */ v("span", {
547
- className: "flex items-center gap-1",
548
- children: [
549
- /* @__PURE__ */ _(a, { className: "h-3 w-3" }),
550
- " Due: ",
551
- e.dueDate
552
- ]
553
- }),
554
- e.completedAt && /* @__PURE__ */ v("span", {
555
- className: "flex items-center gap-1 text-status-success-text",
556
- children: [
557
- /* @__PURE__ */ _(o, { className: "h-3 w-3" }),
558
- " ",
559
- e.completedAt
560
- ]
561
- }),
562
- e.dependencies.length > 0 && /* @__PURE__ */ v("span", {
563
- className: "flex items-center gap-1",
564
- children: [
565
- /* @__PURE__ */ _(u, { className: "h-3 w-3" }),
566
- /* @__PURE__ */ _("span", {
567
- className: "tabular-nums",
568
- children: e.dependencies.length
569
- }),
570
- " ",
571
- "dependencies"
572
- ]
573
- })
574
- ]
575
- }),
576
- e.notes && /* @__PURE__ */ _("p", {
577
- className: "mt-2 rounded bg-bg-sunken p-2 text-xs text-text-secondary italic",
578
- children: e.notes
579
- })
580
- ]
581
- })]
582
- })
583
- })
584
- }, e.id))
585
- }),
586
- U === "team" && /* @__PURE__ */ v(S, {
587
- className: "border-border-seam",
588
- children: [/* @__PURE__ */ _(w, { children: /* @__PURE__ */ _(T, {
589
- className: "text-base",
590
- children: "Team Members"
591
- }) }), /* @__PURE__ */ _(C, { children: /* @__PURE__ */ _("div", {
592
- className: "space-y-3",
593
- children: K.teamMembers.map((e, t) => /* @__PURE__ */ v("div", {
594
- className: "flex items-center gap-3 rounded-lg border border-border-seam p-3",
595
- children: [/* @__PURE__ */ _("div", {
596
- className: "flex h-10 w-10 items-center justify-center rounded-full bg-accent-soft font-semibold text-text-primary",
597
- children: e.name.charAt(0)
598
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
599
- className: "font-medium",
600
- children: e.name
601
- }), /* @__PURE__ */ _("p", {
602
- className: "text-sm text-text-secondary",
603
- children: e.role
604
- })] })]
605
- }, t))
606
- }) })]
607
- })
608
- ] }) : /* @__PURE__ */ _(S, {
609
- className: "border-border-seam",
610
- children: /* @__PURE__ */ _(C, {
611
- className: "py-6",
612
- children: /* @__PURE__ */ _(O, {
613
- illustration: "onboarding",
614
- title: "Select a project",
615
- description: "Pick a project from the sidebar to view its details."
616
- })
617
- })
618
- })
619
- })]
620
- })
621
- ]
622
- });
623
- }
624
- //#endregion
625
- export { I as ProjectsPage };
626
-
627
- //# sourceMappingURL=ProjectsPage.js.map