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