@burdenoff/microfe-crewfoundry 2026.703.2 → 2026.704.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.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +117 -164
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +99 -82
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +160 -192
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +238 -231
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +196 -166
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +45 -147
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +20 -11
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +45 -152
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +50 -138
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +149 -67
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +50 -201
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +205 -136
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +25 -31
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +118 -104
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +117 -58
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +90 -94
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +210 -191
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +213 -180
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +133 -264
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +279 -212
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +131 -105
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +167 -148
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +3 -3
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +13 -5
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +151 -152
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +38 -21
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +3 -3
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +134 -127
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +163 -132
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +202 -160
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +104 -91
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +29 -147
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +22 -106
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +74 -74
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +101 -97
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +64 -47
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +111 -121
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +131 -110
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +65 -64
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +58 -43
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +66 -82
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +38 -88
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +59 -65
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +209 -323
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +175 -220
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +74 -59
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +96 -80
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +28 -100
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +27 -20
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +73 -73
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +62 -56
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +40 -138
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +126 -93
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +99 -77
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +73 -74
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +122 -122
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +130 -113
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +68 -59
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +73 -62
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +82 -58
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +153 -153
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +63 -48
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,182 +1,194 @@
|
|
|
1
1
|
import { useCrewFoundry as e } from "../providers/CrewFoundryProvider.js";
|
|
2
2
|
import { useCrewFoundryStore as t } from "../store/crewfoundryStore.js";
|
|
3
3
|
import { useMemo as n, useState as r } from "react";
|
|
4
|
-
import { AlertTriangle as i, ArrowUpRight as a, Award as o, Bell as s, Briefcase as c, CheckCircle as l, MapPin as
|
|
5
|
-
import { useNavigate as
|
|
6
|
-
import { jsx as
|
|
7
|
-
import { Badge as
|
|
8
|
-
import { useGlobalUi as
|
|
4
|
+
import { AlertTriangle as i, ArrowUpRight as a, Award as o, Bell as s, Briefcase as c, CheckCircle as l, MapPin as ee, Star as te, Users as u, Zap as d } from "lucide-react";
|
|
5
|
+
import { useNavigate as f } from "react-router-dom";
|
|
6
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
7
|
+
import { Badge as h, Button as g, Card as _, CardContent as v, CardDescription as y, CardHeader as b, CardTitle as x, EmphasisPanel as S, GradientText as C, NextSteps as w, PagePurpose as T, ResponsiveTable as E, Separator as D } from "@burdenoff/fe-libs/ui";
|
|
8
|
+
import { useGlobalUi as O } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
9
|
//#region src/crewfoundry/pages/DashboardEnhancedDashboardPagePage.tsx
|
|
10
|
-
function
|
|
11
|
-
let
|
|
10
|
+
function k() {
|
|
11
|
+
let k = f(), { showToast: A } = O(), { currentUser: j } = e(), { employees: M, jobPostings: N, candidates: P, interviews: F, leaveRequests: I, notifications: L, projects: R, announcements: z, updateLeaveRequest: B, markAllNotificationsRead: V } = t(), [H, U] = r(null), [W, G] = r(!1), K = async () => {
|
|
12
|
+
G(!0);
|
|
13
|
+
try {
|
|
14
|
+
await V(), A("All notifications marked as read", "success");
|
|
15
|
+
} catch (e) {
|
|
16
|
+
A(e instanceof Error ? e.message : "Unable to update notifications", "error");
|
|
17
|
+
} finally {
|
|
18
|
+
G(!1);
|
|
19
|
+
}
|
|
20
|
+
}, q = j?.name || [j?.firstName, j?.lastName].filter(Boolean).join(" ") || j?.email || "Manager", J = async (e, t) => {
|
|
12
21
|
U(e);
|
|
13
22
|
try {
|
|
14
|
-
await
|
|
23
|
+
await B(e, {
|
|
15
24
|
status: t,
|
|
16
|
-
approverName:
|
|
17
|
-
}),
|
|
25
|
+
approverName: q
|
|
26
|
+
}), A(t === "approved" ? "Leave approved" : "Leave rejected", "success");
|
|
18
27
|
} catch (e) {
|
|
19
|
-
|
|
28
|
+
A(e instanceof Error ? e.message : "Unable to update leave request", "error");
|
|
20
29
|
} finally {
|
|
21
30
|
U(null);
|
|
22
31
|
}
|
|
23
|
-
},
|
|
32
|
+
}, Y = n(() => [
|
|
24
33
|
{
|
|
25
|
-
label: `Post New Job (${
|
|
34
|
+
label: `Post New Job (${N.filter((e) => e.status === "active").length} active)`,
|
|
26
35
|
icon: c,
|
|
27
36
|
color: "text-status-info-text",
|
|
28
37
|
to: "../../hiring/create-job-page"
|
|
29
38
|
},
|
|
30
39
|
{
|
|
31
|
-
label: `Review Candidates (${
|
|
32
|
-
icon:
|
|
40
|
+
label: `Review Candidates (${P.filter((e) => e.status === "new").length})`,
|
|
41
|
+
icon: u,
|
|
33
42
|
color: "text-action-primary-bg",
|
|
34
43
|
to: "../../hiring/candidates-page"
|
|
35
44
|
},
|
|
36
45
|
{
|
|
37
|
-
label: `Approve Leaves (${
|
|
46
|
+
label: `Approve Leaves (${I.filter((e) => e.status === "pending").length})`,
|
|
38
47
|
icon: l,
|
|
39
48
|
color: "text-status-success-text",
|
|
40
49
|
to: "../../hr/leave-management-page"
|
|
41
50
|
},
|
|
42
51
|
{
|
|
43
|
-
label: `Run Payroll (${
|
|
44
|
-
icon:
|
|
52
|
+
label: `Run Payroll (${R.filter((e) => e.status === "active").length} projects)`,
|
|
53
|
+
icon: d,
|
|
45
54
|
color: "text-status-warning-text",
|
|
46
55
|
to: "../../hr/payroll-page"
|
|
47
56
|
}
|
|
48
57
|
], [
|
|
49
|
-
F,
|
|
50
58
|
P,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
], [F, N]), J = I.filter((e) => e.status === "scheduled"), Y = L.filter((e) => e.status === "pending"), X = R.filter((e) => !e.read), Z = B.filter((e) => e.isPinned), Q = [...N].sort((e, t) => t.performanceScore - e.performanceScore).slice(0, 5), $ = [...N].sort((e, t) => t.startDate.localeCompare(e.startDate)).slice(0, 5), ee = N.reduce((e, t) => (e[t.location] = (e[t.location] || 0) + 1, e), {});
|
|
79
|
-
return /* @__PURE__ */ g("div", {
|
|
59
|
+
N,
|
|
60
|
+
I,
|
|
61
|
+
R
|
|
62
|
+
]), X = n(() => {
|
|
63
|
+
let e = P.filter((e) => e.status === "hired").length, t = M.reduce((e, t) => e + t.performanceScore, 0) / Math.max(M.length, 1), n = Math.round(M.filter((e) => e.status === "active").length / Math.max(M.length, 1) * 100);
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
goal: "Fill 30 open positions",
|
|
67
|
+
current: e,
|
|
68
|
+
target: 30,
|
|
69
|
+
unit: "positions"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
goal: "Reach 90% average performance",
|
|
73
|
+
current: Math.round(t * 20),
|
|
74
|
+
target: 90,
|
|
75
|
+
unit: "%"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
goal: "Keep 95% of workforce active",
|
|
79
|
+
current: n,
|
|
80
|
+
target: 95,
|
|
81
|
+
unit: "%"
|
|
82
|
+
}
|
|
83
|
+
];
|
|
84
|
+
}, [P, M]), Z = F.filter((e) => e.status === "scheduled"), ne = I.filter((e) => e.status === "pending"), Q = L.filter((e) => !e.read), $ = z.filter((e) => e.isPinned), re = [...M].sort((e, t) => t.performanceScore - e.performanceScore).slice(0, 5), ie = [...M].sort((e, t) => t.startDate.localeCompare(e.startDate)).slice(0, 5), ae = M.reduce((e, t) => (e[t.location] = (e[t.location] || 0) + 1, e), {});
|
|
85
|
+
return /* @__PURE__ */ m("div", {
|
|
80
86
|
className: "space-y-6 p-6",
|
|
81
87
|
children: [
|
|
82
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ m("div", {
|
|
83
89
|
className: "flex items-center justify-between",
|
|
84
|
-
children: [/* @__PURE__ */
|
|
85
|
-
/* @__PURE__ */
|
|
90
|
+
children: [/* @__PURE__ */ m("div", { children: [
|
|
91
|
+
/* @__PURE__ */ p("h1", {
|
|
86
92
|
className: "text-2xl font-semibold",
|
|
87
|
-
children: /* @__PURE__ */
|
|
93
|
+
children: /* @__PURE__ */ p(C, { children: "Enhanced Dashboard" })
|
|
88
94
|
}),
|
|
89
|
-
/* @__PURE__ */
|
|
95
|
+
/* @__PURE__ */ p("p", {
|
|
90
96
|
className: "text-sm text-text-secondary",
|
|
91
97
|
children: "Complete workforce command center"
|
|
92
98
|
}),
|
|
93
|
-
/* @__PURE__ */
|
|
99
|
+
/* @__PURE__ */ p(T, {
|
|
94
100
|
className: "mt-1",
|
|
95
101
|
children: "A richer, customizable command center for your workforce — see live metrics, activity, and trends tailored to how you run your organization."
|
|
96
102
|
})
|
|
97
|
-
] }), /* @__PURE__ */
|
|
103
|
+
] }), /* @__PURE__ */ m("div", {
|
|
98
104
|
className: "flex items-center gap-3",
|
|
99
|
-
children: [/* @__PURE__ */ g
|
|
105
|
+
children: [/* @__PURE__ */ m(g, {
|
|
106
|
+
variant: "ghost",
|
|
107
|
+
size: "icon",
|
|
100
108
|
className: "relative",
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
109
|
+
disabled: Q.length === 0 || W,
|
|
110
|
+
"aria-label": Q.length > 0 ? `${Q.length} unread notifications, mark all as read` : "No unread notifications",
|
|
111
|
+
title: Q.length > 0 ? "Mark all notifications as read" : "No unread notifications",
|
|
112
|
+
onClick: () => void K(),
|
|
113
|
+
children: [/* @__PURE__ */ p(s, { className: "h-5 w-5 text-text-secondary" }), Q.length > 0 && /* @__PURE__ */ p("span", {
|
|
114
|
+
className: "absolute -top-1 -right-1 h-4 w-4 rounded-full bg-status-error-text text-[10px] text-text-inverse flex items-center justify-center",
|
|
115
|
+
children: Q.length
|
|
104
116
|
})]
|
|
105
|
-
}), /* @__PURE__ */ g
|
|
117
|
+
}), /* @__PURE__ */ m(g, {
|
|
106
118
|
size: "sm",
|
|
107
|
-
onClick: () =>
|
|
108
|
-
children: [/* @__PURE__ */
|
|
119
|
+
onClick: () => k("../../hr/leave-management-page"),
|
|
120
|
+
children: [/* @__PURE__ */ p(d, { className: "h-4 w-4 mr-1" }), "Quick Actions"]
|
|
109
121
|
})]
|
|
110
122
|
})]
|
|
111
123
|
}),
|
|
112
|
-
/* @__PURE__ */
|
|
124
|
+
/* @__PURE__ */ p(w, {
|
|
113
125
|
storageKey: "crewfoundry-enhanced-dashboard",
|
|
114
126
|
steps: [
|
|
115
127
|
{
|
|
116
128
|
id: "hiring",
|
|
117
129
|
label: "Move hiring forward",
|
|
118
130
|
description: "Review open roles and applicants in your pipeline.",
|
|
119
|
-
icon: /* @__PURE__ */
|
|
120
|
-
onClick: () =>
|
|
131
|
+
icon: /* @__PURE__ */ p(c, { className: "h-4 w-4" }),
|
|
132
|
+
onClick: () => k("../../hiring/jobs-page")
|
|
121
133
|
},
|
|
122
134
|
{
|
|
123
135
|
id: "people",
|
|
124
136
|
label: "Check on your people",
|
|
125
137
|
description: "See who is active, on leave, or needs attention.",
|
|
126
|
-
icon: /* @__PURE__ */
|
|
127
|
-
onClick: () =>
|
|
138
|
+
icon: /* @__PURE__ */ p(u, { className: "h-4 w-4" }),
|
|
139
|
+
onClick: () => k("../../hr/employees-page")
|
|
128
140
|
},
|
|
129
141
|
{
|
|
130
142
|
id: "analytics",
|
|
131
143
|
label: "Dig into analytics",
|
|
132
144
|
description: "Explore deeper workforce and hiring trends.",
|
|
133
|
-
icon: /* @__PURE__ */
|
|
134
|
-
onClick: () =>
|
|
145
|
+
icon: /* @__PURE__ */ p(a, { className: "h-4 w-4" }),
|
|
146
|
+
onClick: () => k("../../analytics/analytics-page")
|
|
135
147
|
}
|
|
136
148
|
]
|
|
137
149
|
}),
|
|
138
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ p("div", {
|
|
139
151
|
className: "grid gap-3 md:grid-cols-4",
|
|
140
|
-
children:
|
|
152
|
+
children: Y.map((e) => /* @__PURE__ */ p(_, {
|
|
141
153
|
role: "button",
|
|
142
154
|
tabIndex: 0,
|
|
143
155
|
"aria-label": e.label,
|
|
144
156
|
className: "cursor-pointer hover:shadow-md transition-shadow",
|
|
145
|
-
onClick: () =>
|
|
157
|
+
onClick: () => k(e.to),
|
|
146
158
|
onKeyDown: (t) => {
|
|
147
|
-
(t.key === "Enter" || t.key === " ") && (t.preventDefault(),
|
|
159
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), k(e.to));
|
|
148
160
|
},
|
|
149
|
-
children: /* @__PURE__ */
|
|
161
|
+
children: /* @__PURE__ */ m(v, {
|
|
150
162
|
className: "flex items-center gap-3 p-4",
|
|
151
163
|
children: [
|
|
152
|
-
/* @__PURE__ */
|
|
153
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ p(e.icon, { className: `h-5 w-5 ${e.color}` }),
|
|
165
|
+
/* @__PURE__ */ p("span", {
|
|
154
166
|
className: "text-sm font-medium",
|
|
155
167
|
children: e.label
|
|
156
168
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ p(a, { className: "h-4 w-4 ml-auto text-text-secondary" })
|
|
158
170
|
]
|
|
159
171
|
})
|
|
160
172
|
}, e.label))
|
|
161
173
|
}),
|
|
162
|
-
|
|
174
|
+
$.length > 0 && /* @__PURE__ */ p(_, {
|
|
163
175
|
className: "border-status-warning-text/30 bg-status-warning-bg/50",
|
|
164
|
-
children: /* @__PURE__ */
|
|
176
|
+
children: /* @__PURE__ */ p(v, {
|
|
165
177
|
className: "p-4",
|
|
166
|
-
children:
|
|
178
|
+
children: $.map((e) => /* @__PURE__ */ m("div", {
|
|
167
179
|
className: "flex items-start gap-3",
|
|
168
180
|
children: [
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
/* @__PURE__ */
|
|
181
|
+
/* @__PURE__ */ p(i, { className: "h-4 w-4 text-status-warning-text mt-0.5" }),
|
|
182
|
+
/* @__PURE__ */ m("div", { children: [
|
|
183
|
+
/* @__PURE__ */ p("p", {
|
|
172
184
|
className: "text-sm font-medium",
|
|
173
185
|
children: e.title
|
|
174
186
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ m("p", {
|
|
176
188
|
className: "text-xs text-text-secondary mt-1",
|
|
177
189
|
children: [e.content.slice(0, 120), "..."]
|
|
178
190
|
}),
|
|
179
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ m("p", {
|
|
180
192
|
className: "text-xs text-text-secondary mt-1",
|
|
181
193
|
children: [
|
|
182
194
|
"— ",
|
|
@@ -186,7 +198,7 @@ function A() {
|
|
|
186
198
|
]
|
|
187
199
|
})
|
|
188
200
|
] }),
|
|
189
|
-
/* @__PURE__ */ h
|
|
201
|
+
/* @__PURE__ */ p(h, {
|
|
190
202
|
variant: "outline",
|
|
191
203
|
className: "ml-auto flex-shrink-0",
|
|
192
204
|
children: e.priority
|
|
@@ -195,30 +207,30 @@ function A() {
|
|
|
195
207
|
}, e.id))
|
|
196
208
|
})
|
|
197
209
|
}),
|
|
198
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ m("div", {
|
|
199
211
|
className: "grid gap-4 md:grid-cols-3",
|
|
200
212
|
children: [
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ m(S, { children: [
|
|
214
|
+
/* @__PURE__ */ p("div", {
|
|
203
215
|
className: "text-base font-semibold",
|
|
204
216
|
children: "Company Goals"
|
|
205
217
|
}),
|
|
206
|
-
/* @__PURE__ */
|
|
218
|
+
/* @__PURE__ */ p("p", {
|
|
207
219
|
className: "mb-4 text-sm text-text-secondary",
|
|
208
220
|
children: "Q1 2026 targets"
|
|
209
221
|
}),
|
|
210
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ p("div", {
|
|
211
223
|
className: "space-y-4",
|
|
212
|
-
children:
|
|
224
|
+
children: X.map((e) => {
|
|
213
225
|
let t = Math.round(e.current / e.target * 100);
|
|
214
|
-
return /* @__PURE__ */
|
|
226
|
+
return /* @__PURE__ */ m("div", {
|
|
215
227
|
className: "space-y-1",
|
|
216
|
-
children: [/* @__PURE__ */
|
|
228
|
+
children: [/* @__PURE__ */ m("div", {
|
|
217
229
|
className: "flex justify-between text-xs",
|
|
218
|
-
children: [/* @__PURE__ */
|
|
230
|
+
children: [/* @__PURE__ */ p("span", {
|
|
219
231
|
className: "text-text-secondary",
|
|
220
232
|
children: e.goal
|
|
221
|
-
}), /* @__PURE__ */
|
|
233
|
+
}), /* @__PURE__ */ m("span", {
|
|
222
234
|
className: "font-medium",
|
|
223
235
|
children: [
|
|
224
236
|
e.current,
|
|
@@ -228,9 +240,9 @@ function A() {
|
|
|
228
240
|
e.unit
|
|
229
241
|
]
|
|
230
242
|
})]
|
|
231
|
-
}), /* @__PURE__ */
|
|
243
|
+
}), /* @__PURE__ */ p("div", {
|
|
232
244
|
className: "h-2 bg-bg-sunken rounded overflow-hidden",
|
|
233
|
-
children: /* @__PURE__ */
|
|
245
|
+
children: /* @__PURE__ */ p("div", {
|
|
234
246
|
className: `h-2 rounded ${t >= 90 ? "bg-status-success-text" : t >= 70 ? "bg-status-warning-text" : "bg-status-error-text"}`,
|
|
235
247
|
style: { width: `${Math.min(t, 100)}%` }
|
|
236
248
|
})
|
|
@@ -239,35 +251,35 @@ function A() {
|
|
|
239
251
|
})
|
|
240
252
|
})
|
|
241
253
|
] }),
|
|
242
|
-
/* @__PURE__ */
|
|
254
|
+
/* @__PURE__ */ m(_, { children: [/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, {
|
|
243
255
|
className: "text-base",
|
|
244
256
|
children: "Upcoming Interviews"
|
|
245
|
-
}), /* @__PURE__ */
|
|
257
|
+
}), /* @__PURE__ */ m(y, { children: [Z.length, " scheduled"] })] }), /* @__PURE__ */ p(v, {
|
|
246
258
|
className: "space-y-3",
|
|
247
|
-
children:
|
|
259
|
+
children: Z.map((e) => /* @__PURE__ */ m("div", {
|
|
248
260
|
className: "flex items-center gap-3 rounded border p-2",
|
|
249
261
|
children: [
|
|
250
|
-
/* @__PURE__ */
|
|
262
|
+
/* @__PURE__ */ m("div", {
|
|
251
263
|
className: "flex-1 min-w-0",
|
|
252
|
-
children: [/* @__PURE__ */
|
|
264
|
+
children: [/* @__PURE__ */ p("p", {
|
|
253
265
|
className: "text-sm font-medium truncate",
|
|
254
266
|
children: e.candidateName
|
|
255
|
-
}), /* @__PURE__ */
|
|
267
|
+
}), /* @__PURE__ */ p("p", {
|
|
256
268
|
className: "text-xs text-text-secondary",
|
|
257
269
|
children: e.position
|
|
258
270
|
})]
|
|
259
271
|
}),
|
|
260
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ m("div", {
|
|
261
273
|
className: "text-right flex-shrink-0",
|
|
262
|
-
children: [/* @__PURE__ */
|
|
274
|
+
children: [/* @__PURE__ */ p("p", {
|
|
263
275
|
className: "text-xs font-medium",
|
|
264
276
|
children: e.date
|
|
265
|
-
}), /* @__PURE__ */
|
|
277
|
+
}), /* @__PURE__ */ p("p", {
|
|
266
278
|
className: "text-xs text-text-secondary",
|
|
267
279
|
children: e.time
|
|
268
280
|
})]
|
|
269
281
|
}),
|
|
270
|
-
/* @__PURE__ */ h
|
|
282
|
+
/* @__PURE__ */ p(h, {
|
|
271
283
|
variant: "outline",
|
|
272
284
|
className: "text-[10px]",
|
|
273
285
|
children: e.type
|
|
@@ -275,18 +287,18 @@ function A() {
|
|
|
275
287
|
]
|
|
276
288
|
}, e.id))
|
|
277
289
|
})] }),
|
|
278
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ m(_, { children: [/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, {
|
|
279
291
|
className: "text-base",
|
|
280
292
|
children: "Pending Actions"
|
|
281
|
-
}), /* @__PURE__ */
|
|
293
|
+
}), /* @__PURE__ */ p(y, { children: "Items requiring your attention" })] }), /* @__PURE__ */ m(v, {
|
|
282
294
|
className: "space-y-3",
|
|
283
295
|
children: [
|
|
284
|
-
|
|
296
|
+
ne.map((e) => /* @__PURE__ */ m("div", {
|
|
285
297
|
className: "flex items-center justify-between rounded border p-2",
|
|
286
|
-
children: [/* @__PURE__ */
|
|
298
|
+
children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
287
299
|
className: "text-sm font-medium",
|
|
288
300
|
children: e.employeeName
|
|
289
|
-
}), /* @__PURE__ */
|
|
301
|
+
}), /* @__PURE__ */ m("p", {
|
|
290
302
|
className: "text-xs text-text-secondary",
|
|
291
303
|
children: [
|
|
292
304
|
e.type,
|
|
@@ -294,57 +306,57 @@ function A() {
|
|
|
294
306
|
e.days,
|
|
295
307
|
" days"
|
|
296
308
|
]
|
|
297
|
-
})] }), /* @__PURE__ */
|
|
309
|
+
})] }), /* @__PURE__ */ m("div", {
|
|
298
310
|
className: "flex gap-1",
|
|
299
|
-
children: [/* @__PURE__ */
|
|
311
|
+
children: [/* @__PURE__ */ p(g, {
|
|
300
312
|
size: "sm",
|
|
301
313
|
variant: "outline",
|
|
302
314
|
className: "h-7 text-xs",
|
|
303
315
|
disabled: H === e.id,
|
|
304
|
-
onClick: () => void
|
|
316
|
+
onClick: () => void J(e.id, "rejected"),
|
|
305
317
|
children: "Deny"
|
|
306
|
-
}), /* @__PURE__ */
|
|
318
|
+
}), /* @__PURE__ */ p(g, {
|
|
307
319
|
size: "sm",
|
|
308
320
|
className: "h-7 text-xs",
|
|
309
321
|
disabled: H === e.id,
|
|
310
|
-
onClick: () => void
|
|
322
|
+
onClick: () => void J(e.id, "approved"),
|
|
311
323
|
children: "Approve"
|
|
312
324
|
})]
|
|
313
325
|
})]
|
|
314
326
|
}, e.id)),
|
|
315
|
-
/* @__PURE__ */
|
|
316
|
-
/* @__PURE__ */
|
|
327
|
+
/* @__PURE__ */ p(D, {}),
|
|
328
|
+
/* @__PURE__ */ m("div", {
|
|
317
329
|
className: "text-xs text-text-secondary text-center",
|
|
318
|
-
children: [
|
|
330
|
+
children: [P.filter((e) => e.status === "new").length, " new applications to review"]
|
|
319
331
|
})
|
|
320
332
|
]
|
|
321
333
|
})] })
|
|
322
334
|
]
|
|
323
335
|
}),
|
|
324
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ m("div", {
|
|
325
337
|
className: "grid gap-4 md:grid-cols-2",
|
|
326
|
-
children: [/* @__PURE__ */
|
|
338
|
+
children: [/* @__PURE__ */ m(_, { children: [/* @__PURE__ */ p(b, { children: /* @__PURE__ */ m(x, {
|
|
327
339
|
className: "text-base flex items-center gap-2",
|
|
328
|
-
children: [/* @__PURE__ */
|
|
329
|
-
}) }), /* @__PURE__ */
|
|
340
|
+
children: [/* @__PURE__ */ p(o, { className: "h-4 w-4 text-status-warning-text" }), "Top Performers"]
|
|
341
|
+
}) }), /* @__PURE__ */ p(v, {
|
|
330
342
|
className: "space-y-3",
|
|
331
|
-
children:
|
|
343
|
+
children: re.map((e, t) => /* @__PURE__ */ m("div", {
|
|
332
344
|
className: "flex items-center gap-3",
|
|
333
345
|
children: [
|
|
334
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ m("span", {
|
|
335
347
|
className: "text-sm font-bold text-text-secondary w-5",
|
|
336
348
|
children: ["#", t + 1]
|
|
337
349
|
}),
|
|
338
|
-
/* @__PURE__ */
|
|
350
|
+
/* @__PURE__ */ m("div", {
|
|
339
351
|
className: "flex-1",
|
|
340
|
-
children: [/* @__PURE__ */
|
|
352
|
+
children: [/* @__PURE__ */ m("p", {
|
|
341
353
|
className: "text-sm font-medium",
|
|
342
354
|
children: [
|
|
343
355
|
e.firstName,
|
|
344
356
|
" ",
|
|
345
357
|
e.lastName
|
|
346
358
|
]
|
|
347
|
-
}), /* @__PURE__ */
|
|
359
|
+
}), /* @__PURE__ */ m("p", {
|
|
348
360
|
className: "text-xs text-text-secondary",
|
|
349
361
|
children: [
|
|
350
362
|
e.position,
|
|
@@ -353,35 +365,35 @@ function A() {
|
|
|
353
365
|
]
|
|
354
366
|
})]
|
|
355
367
|
}),
|
|
356
|
-
/* @__PURE__ */
|
|
368
|
+
/* @__PURE__ */ m("div", {
|
|
357
369
|
className: "flex items-center gap-1",
|
|
358
|
-
children: [/* @__PURE__ */
|
|
370
|
+
children: [/* @__PURE__ */ p(te, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ p("span", {
|
|
359
371
|
className: "text-sm font-medium",
|
|
360
372
|
children: e.performanceScore
|
|
361
373
|
})]
|
|
362
374
|
})
|
|
363
375
|
]
|
|
364
376
|
}, e.id))
|
|
365
|
-
})] }), /* @__PURE__ */
|
|
377
|
+
})] }), /* @__PURE__ */ m(_, { children: [/* @__PURE__ */ p(b, { children: /* @__PURE__ */ m(x, {
|
|
366
378
|
className: "text-base flex items-center gap-2",
|
|
367
|
-
children: [/* @__PURE__ */
|
|
368
|
-
}) }), /* @__PURE__ */
|
|
379
|
+
children: [/* @__PURE__ */ p(ee, { className: "h-4 w-4" }), "Workforce Locations"]
|
|
380
|
+
}) }), /* @__PURE__ */ p(v, {
|
|
369
381
|
className: "space-y-3",
|
|
370
|
-
children: Object.entries(
|
|
382
|
+
children: Object.entries(ae).sort(([, e], [, t]) => t - e).map(([e, t]) => /* @__PURE__ */ m("div", {
|
|
371
383
|
className: "flex items-center justify-between",
|
|
372
|
-
children: [/* @__PURE__ */
|
|
384
|
+
children: [/* @__PURE__ */ p("span", {
|
|
373
385
|
className: "text-sm",
|
|
374
386
|
children: e
|
|
375
|
-
}), /* @__PURE__ */
|
|
387
|
+
}), /* @__PURE__ */ m("div", {
|
|
376
388
|
className: "flex items-center gap-2",
|
|
377
|
-
children: [/* @__PURE__ */
|
|
389
|
+
children: [/* @__PURE__ */ p("span", {
|
|
378
390
|
className: "text-sm font-medium",
|
|
379
391
|
children: t
|
|
380
|
-
}), /* @__PURE__ */
|
|
392
|
+
}), /* @__PURE__ */ m("span", {
|
|
381
393
|
className: "text-xs text-text-secondary",
|
|
382
394
|
children: [
|
|
383
395
|
"(",
|
|
384
|
-
Math.round(t /
|
|
396
|
+
Math.round(t / Math.max(M.length, 1) * 100),
|
|
385
397
|
"%)"
|
|
386
398
|
]
|
|
387
399
|
})]
|
|
@@ -389,48 +401,69 @@ function A() {
|
|
|
389
401
|
}, e))
|
|
390
402
|
})] })]
|
|
391
403
|
}),
|
|
392
|
-
/* @__PURE__ */
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
children: e.
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
404
|
+
/* @__PURE__ */ m(_, { children: [/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Recent Hires" }), /* @__PURE__ */ p(y, { children: "Newest team members" })] }), /* @__PURE__ */ p(v, { children: /* @__PURE__ */ p(E, {
|
|
405
|
+
columns: [
|
|
406
|
+
{
|
|
407
|
+
key: "name",
|
|
408
|
+
header: "Name",
|
|
409
|
+
priority: "primary",
|
|
410
|
+
cell: (e) => /* @__PURE__ */ m("span", {
|
|
411
|
+
className: "font-medium",
|
|
412
|
+
children: [
|
|
413
|
+
e.firstName,
|
|
414
|
+
" ",
|
|
415
|
+
e.lastName
|
|
416
|
+
]
|
|
417
|
+
})
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
key: "position",
|
|
421
|
+
header: "Position",
|
|
422
|
+
priority: "secondary",
|
|
423
|
+
cell: (e) => /* @__PURE__ */ p("span", {
|
|
424
|
+
className: "text-text-secondary",
|
|
425
|
+
children: e.position
|
|
426
|
+
})
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
key: "department",
|
|
430
|
+
header: "Department",
|
|
431
|
+
priority: "secondary",
|
|
432
|
+
cell: (e) => /* @__PURE__ */ p("span", { children: e.department })
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
key: "location",
|
|
436
|
+
header: "Location",
|
|
437
|
+
priority: "hidden-on-mobile",
|
|
438
|
+
cell: (e) => /* @__PURE__ */ p("span", {
|
|
439
|
+
className: "text-text-secondary",
|
|
440
|
+
children: e.location
|
|
441
|
+
})
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
key: "startDate",
|
|
445
|
+
header: "Start Date",
|
|
446
|
+
priority: "secondary",
|
|
447
|
+
cell: (e) => /* @__PURE__ */ p("span", { children: e.startDate })
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
key: "type",
|
|
451
|
+
header: "Type",
|
|
452
|
+
priority: "primary",
|
|
453
|
+
cell: (e) => /* @__PURE__ */ p(h, {
|
|
454
|
+
variant: "outline",
|
|
455
|
+
className: "w-fit text-[10px]",
|
|
456
|
+
children: e.type.replace("_", " ")
|
|
457
|
+
})
|
|
458
|
+
}
|
|
459
|
+
],
|
|
460
|
+
data: ie,
|
|
461
|
+
rowKey: (e) => e.id
|
|
462
|
+
}) })] })
|
|
430
463
|
]
|
|
431
464
|
});
|
|
432
465
|
}
|
|
433
466
|
//#endregion
|
|
434
|
-
export {
|
|
467
|
+
export { k as DashboardEnhancedDashboardPagePage };
|
|
435
468
|
|
|
436
469
|
//# sourceMappingURL=DashboardEnhancedDashboardPagePage.js.map
|