@burdenoff/microfe-proserviceworld 2026.625.1 → 2026.626.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.
- package/dist/proserviceworld/pages/AdminReportsPage.js +102 -68
- package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
- package/dist/proserviceworld/pages/AdminUsersPage.js +37 -33
- package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
- package/dist/proserviceworld/pages/AnalyticsPage.js +66 -36
- package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
- package/dist/proserviceworld/pages/BookingsPage.js +52 -48
- package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
- package/dist/proserviceworld/pages/DashboardPage.js +275 -243
- package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
- package/dist/proserviceworld/pages/DocumentsPage.js +204 -200
- package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/MessagesPage.js +200 -186
- package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
- package/dist/proserviceworld/pages/PaymentsPage.js +70 -39
- package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProjectsPage.js +510 -477
- package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProviderDetailPage.js +71 -41
- package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
- package/dist/proserviceworld/pages/ProvidersPage.js +62 -58
- package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
- package/dist/proserviceworld/pages/ReviewsPage.js +80 -63
- package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServiceDetailsPage.js +118 -83
- package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
- package/dist/proserviceworld/pages/ServicesPage.js +134 -130
- package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
- package/dist/proserviceworld/pages/VerificationPage.js +23 -19
- package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,9 +2,9 @@ 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 { 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";
|
|
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
6
|
//#region src/proserviceworld/pages/ProjectsPage.tsx
|
|
7
|
-
var
|
|
7
|
+
var M = {
|
|
8
8
|
planning: {
|
|
9
9
|
label: "Planning",
|
|
10
10
|
color: "text-status-warning-text",
|
|
@@ -30,7 +30,7 @@ var A = {
|
|
|
30
30
|
color: "text-status-error-text",
|
|
31
31
|
dot: "bg-status-error-text"
|
|
32
32
|
}
|
|
33
|
-
},
|
|
33
|
+
}, N = {
|
|
34
34
|
low: {
|
|
35
35
|
label: "Low",
|
|
36
36
|
variant: "outline"
|
|
@@ -47,379 +47,468 @@ var A = {
|
|
|
47
47
|
label: "Critical",
|
|
48
48
|
variant: "destructive"
|
|
49
49
|
}
|
|
50
|
-
},
|
|
50
|
+
}, P = {
|
|
51
51
|
completed: "bg-status-success-text",
|
|
52
52
|
in_progress: "bg-accent-blue",
|
|
53
53
|
pending: "bg-bg-sunken",
|
|
54
54
|
overdue: "bg-status-error-text"
|
|
55
|
-
},
|
|
55
|
+
}, F = {
|
|
56
56
|
completed: "text-status-success-text",
|
|
57
57
|
in_progress: "text-accent-blue",
|
|
58
58
|
pending: "text-text-secondary",
|
|
59
59
|
overdue: "text-status-error-text"
|
|
60
60
|
};
|
|
61
|
-
function
|
|
62
|
-
let { projects:
|
|
63
|
-
let e = [...
|
|
64
|
-
if (
|
|
65
|
-
let t =
|
|
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
66
|
e = e.filter((e) => e.title.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
|
|
67
67
|
}
|
|
68
68
|
return e;
|
|
69
69
|
}, [
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
]),
|
|
70
|
+
I,
|
|
71
|
+
z,
|
|
72
|
+
L
|
|
73
|
+
]), K = I.find((e) => e.id === V);
|
|
74
74
|
return /* @__PURE__ */ v("div", {
|
|
75
75
|
className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
|
|
76
|
-
children: [
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
+
})]
|
|
89
91
|
})]
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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",
|
|
136
216
|
children: [
|
|
137
217
|
/* @__PURE__ */ v("div", {
|
|
138
|
-
className: "flex items-
|
|
139
|
-
children: [/* @__PURE__ */
|
|
140
|
-
className: "
|
|
141
|
-
children:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
+
]
|
|
153
263
|
})]
|
|
154
264
|
}),
|
|
155
265
|
/* @__PURE__ */ v("div", {
|
|
156
|
-
className: "mt-
|
|
266
|
+
className: "mt-4",
|
|
157
267
|
children: [/* @__PURE__ */ v("div", {
|
|
158
|
-
className: "flex items-center justify-between text-
|
|
159
|
-
children: [/* @__PURE__ */ _("span", {
|
|
160
|
-
className: "
|
|
161
|
-
children:
|
|
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, "%"]
|
|
162
275
|
})]
|
|
163
276
|
}), /* @__PURE__ */ _("div", {
|
|
164
|
-
className: "mt-1 h-
|
|
277
|
+
className: "mt-1 h-3 overflow-hidden rounded-full bg-bg-sunken",
|
|
165
278
|
children: /* @__PURE__ */ _("div", {
|
|
166
|
-
className: "h-
|
|
167
|
-
style: { width: `${
|
|
279
|
+
className: "h-3 rounded-full bg-accent-blue transition-all",
|
|
280
|
+
style: { width: `${K.progress}%` }
|
|
168
281
|
})
|
|
169
282
|
})]
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
})
|
|
174
|
-
})
|
|
175
|
-
]
|
|
176
|
-
}), /* @__PURE__ */ _("div", {
|
|
177
|
-
className: "space-y-4 lg:col-span-2",
|
|
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",
|
|
283
|
+
}),
|
|
284
|
+
/* @__PURE__ */ v("div", {
|
|
285
|
+
className: "mt-4 flex flex-wrap gap-4 text-sm",
|
|
211
286
|
children: [
|
|
212
|
-
/* @__PURE__ */
|
|
213
|
-
className: "
|
|
214
|
-
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
|
+
]
|
|
215
297
|
}),
|
|
216
|
-
/* @__PURE__ */ v("
|
|
217
|
-
className: "
|
|
218
|
-
children: [
|
|
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
|
+
]
|
|
219
309
|
}),
|
|
220
|
-
/* @__PURE__ */ v("
|
|
221
|
-
className: "
|
|
310
|
+
/* @__PURE__ */ v("span", {
|
|
311
|
+
className: "flex items-center gap-1 text-text-secondary",
|
|
222
312
|
children: [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
313
|
+
/* @__PURE__ */ _(m, { className: "h-4 w-4" }),
|
|
314
|
+
/* @__PURE__ */ _("span", {
|
|
315
|
+
className: "tabular-nums",
|
|
316
|
+
children: K.milestones.length
|
|
317
|
+
}),
|
|
318
|
+
" ",
|
|
319
|
+
"milestones"
|
|
228
320
|
]
|
|
229
321
|
})
|
|
230
322
|
]
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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",
|
|
254
371
|
children: [
|
|
255
|
-
/* @__PURE__ */ v("
|
|
256
|
-
className: "flex
|
|
257
|
-
children: [
|
|
258
|
-
|
|
259
|
-
" "
|
|
260
|
-
|
|
261
|
-
" -",
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
]
|
|
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
|
+
})]
|
|
265
381
|
}),
|
|
266
|
-
/* @__PURE__ */ v("
|
|
267
|
-
className: "flex
|
|
268
|
-
children: [
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
"members"
|
|
276
|
-
]
|
|
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
|
+
})]
|
|
277
391
|
}),
|
|
278
|
-
/* @__PURE__ */ v("
|
|
279
|
-
className: "flex
|
|
280
|
-
children: [
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
+
})
|
|
289
408
|
})
|
|
290
409
|
]
|
|
291
|
-
})
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
key: "team",
|
|
320
|
-
label: "Team"
|
|
321
|
-
}
|
|
322
|
-
].map(({ key: e, label: t }) => /* @__PURE__ */ _("button", {
|
|
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"}`,
|
|
326
|
-
children: t
|
|
327
|
-
}, e))
|
|
328
|
-
}),
|
|
329
|
-
V === "overview" && /* @__PURE__ */ v("div", {
|
|
330
|
-
className: "grid gap-4 sm:grid-cols-2",
|
|
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",
|
|
339
|
-
children: [
|
|
340
|
-
/* @__PURE__ */ v("div", {
|
|
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
|
-
})]
|
|
359
|
-
}),
|
|
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
|
-
})
|
|
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);
|
|
376
436
|
})
|
|
377
|
-
]
|
|
437
|
+
})]
|
|
378
438
|
})]
|
|
379
|
-
}),
|
|
380
|
-
|
|
439
|
+
}),
|
|
440
|
+
U === "timeline" && /* @__PURE__ */ _(S, {
|
|
381
441
|
className: "border-border-seam",
|
|
382
|
-
children:
|
|
383
|
-
className: "
|
|
384
|
-
children:
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
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))
|
|
404
495
|
})
|
|
405
|
-
})
|
|
406
|
-
})
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}),
|
|
422
|
-
/* @__PURE__ */ v("div", {
|
|
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", {
|
|
423
512
|
className: "flex-1",
|
|
424
513
|
children: [
|
|
425
514
|
/* @__PURE__ */ v("div", {
|
|
@@ -428,7 +517,7 @@ function P() {
|
|
|
428
517
|
className: "font-medium",
|
|
429
518
|
children: e.title
|
|
430
519
|
}), /* @__PURE__ */ _(b, {
|
|
431
|
-
variant:
|
|
520
|
+
variant: N[e.priority].variant,
|
|
432
521
|
className: "text-xs",
|
|
433
522
|
children: e.priority
|
|
434
523
|
})]
|
|
@@ -437,158 +526,102 @@ function P() {
|
|
|
437
526
|
className: "mt-1 text-sm text-text-secondary",
|
|
438
527
|
children: e.description
|
|
439
528
|
}),
|
|
440
|
-
/* @__PURE__ */ v("div", {
|
|
441
|
-
className: "mt-
|
|
442
|
-
children: [/* @__PURE__ */
|
|
443
|
-
className: "
|
|
444
|
-
children:
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
/* @__PURE__ */ _(o, { className: "h-3 w-3" }),
|
|
453
|
-
" Completed:",
|
|
454
|
-
" ",
|
|
455
|
-
e.completedAt
|
|
456
|
-
]
|
|
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))
|
|
457
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
|
|
458
579
|
})
|
|
459
580
|
]
|
|
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", {
|
|
480
|
-
className: "flex-1",
|
|
481
|
-
children: [
|
|
482
|
-
/* @__PURE__ */ v("div", {
|
|
483
|
-
className: "flex items-center gap-2",
|
|
484
|
-
children: [/* @__PURE__ */ _("h4", {
|
|
485
|
-
className: "font-medium",
|
|
486
|
-
children: e.title
|
|
487
|
-
}), /* @__PURE__ */ _(b, {
|
|
488
|
-
variant: j[e.priority].variant,
|
|
489
|
-
className: "text-xs",
|
|
490
|
-
children: e.priority
|
|
491
|
-
})]
|
|
492
|
-
}),
|
|
493
|
-
/* @__PURE__ */ _("p", {
|
|
494
|
-
className: "mt-1 text-sm text-text-secondary",
|
|
495
|
-
children: e.description
|
|
496
|
-
}),
|
|
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))
|
|
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
|
|
547
|
-
})
|
|
548
|
-
]
|
|
549
|
-
})]
|
|
581
|
+
})]
|
|
582
|
+
})
|
|
550
583
|
})
|
|
551
|
-
})
|
|
552
|
-
},
|
|
553
|
-
|
|
554
|
-
|
|
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, {
|
|
555
609
|
className: "border-border-seam",
|
|
556
|
-
children:
|
|
557
|
-
className: "
|
|
558
|
-
children:
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
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."
|
|
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
|
+
})
|
|
584
617
|
})
|
|
585
618
|
})
|
|
586
|
-
})
|
|
587
|
-
})
|
|
588
|
-
|
|
619
|
+
})]
|
|
620
|
+
})
|
|
621
|
+
]
|
|
589
622
|
});
|
|
590
623
|
}
|
|
591
624
|
//#endregion
|
|
592
|
-
export {
|
|
625
|
+
export { I as ProjectsPage };
|
|
593
626
|
|
|
594
627
|
//# sourceMappingURL=ProjectsPage.js.map
|