@burdenoff/microfe-crewfoundry 2026.704.3 → 2026.704.4
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 +76 -75
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +118 -117
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +115 -114
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +105 -104
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +52 -51
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +94 -93
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +97 -96
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +68 -67
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +96 -95
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +153 -152
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +107 -106
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +77 -76
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +80 -79
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +102 -101
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +126 -125
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +64 -63
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +96 -95
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +127 -126
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +118 -117
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +123 -122
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +77 -76
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +49 -48
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +62 -61
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +72 -71
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +70 -69
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +57 -56
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +58 -57
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +122 -121
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +70 -69
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +41 -40
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +65 -64
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +75 -74
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +60 -59
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +53 -52
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +37 -36
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +126 -125
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +62 -61
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +50 -49
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +72 -71
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +40 -39
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +130 -129
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +60 -59
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js +177 -146
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/dist/crewfoundry/utils/formatEnumLabel.js +8 -0
- package/dist/crewfoundry/utils/formatEnumLabel.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,200 +1,201 @@
|
|
|
1
1
|
import { useCrewFoundry as e } from "../providers/CrewFoundryProvider.js";
|
|
2
2
|
import { useCrewFoundryStore as t } from "../store/crewfoundryStore.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { formatEnumLabel as n } from "../utils/formatEnumLabel.js";
|
|
4
|
+
import { useState as ee } from "react";
|
|
5
|
+
import { Activity as r, Briefcase as i, Calendar as te, TrendingUp as a, Users as o } from "lucide-react";
|
|
6
|
+
import { useNavigate as ne } from "react-router-dom";
|
|
7
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
import { AuroraBackground as re, Badge as l, Button as u, Card as d, CardContent as f, CardDescription as p, CardHeader as m, CardTitle as h, EmphasisPanel as ie, GlassCard as g, GradientText as ae, IllustratedEmptyState as _, NextSteps as v, PagePurpose as y, Pagination as b } from "@burdenoff/fe-libs/ui";
|
|
9
|
+
import { usePagination as x } from "@burdenoff/fe-libs/shared/hooks";
|
|
9
10
|
import { useGlobalUi as S } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
10
|
-
import { useI18n as
|
|
11
|
+
import { useI18n as oe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
11
12
|
//#region src/crewfoundry/pages/DashboardDashboardPagePage.tsx
|
|
12
|
-
function
|
|
13
|
-
let { t:
|
|
14
|
-
|
|
13
|
+
function C() {
|
|
14
|
+
let { t: C } = oe(), w = ne(), { showToast: T } = S(), { currentUser: E } = e(), { employees: D, jobPostings: O, interviews: se, leaveRequests: k, notifications: A, projects: j, updateLeaveRequest: M } = t(), [N, P] = ee(null), F = E?.name || [E?.firstName, E?.lastName].filter(Boolean).join(" ") || E?.email || "Manager", I = async (e, t) => {
|
|
15
|
+
P(e);
|
|
15
16
|
try {
|
|
16
|
-
await
|
|
17
|
+
await M(e, {
|
|
17
18
|
status: t,
|
|
18
|
-
approverName:
|
|
19
|
-
}),
|
|
19
|
+
approverName: F
|
|
20
|
+
}), T(t === "approved" ? "Leave approved" : "Leave rejected", "success");
|
|
20
21
|
} catch (e) {
|
|
21
|
-
|
|
22
|
+
T(e instanceof Error ? e.message : "Unable to update leave request", "error");
|
|
22
23
|
} finally {
|
|
23
|
-
|
|
24
|
+
P(null);
|
|
24
25
|
}
|
|
25
|
-
},
|
|
26
|
-
let n =
|
|
26
|
+
}, L = (e, t) => {
|
|
27
|
+
let n = C(e);
|
|
27
28
|
return n === e ? t : n;
|
|
28
|
-
},
|
|
29
|
-
return /* @__PURE__ */
|
|
29
|
+
}, R = D.filter((e) => e.status === "active").length, z = D.filter((e) => e.status === "on_leave").length, B = O.filter((e) => e.status === "active").length, V = O.reduce((e, t) => e + t.applicants, 0), H = k.filter((e) => e.status === "pending").length, U = A.filter((e) => !e.read).length, W = j.filter((e) => e.status === "active").length, G = (D.reduce((e, t) => e + t.performanceScore, 0) / Math.max(D.length, 1)).toFixed(1), K = D.reduce((e, t) => (e[t.department] = (e[t.department] || 0) + 1, e), {}), q = Object.values(K), ce = q.length ? Math.max(...q) : 1, J = [...se].filter((e) => e.status === "scheduled").sort((e, t) => `${e.date} ${e.time}`.localeCompare(`${t.date} ${t.time}`)), Y = J.slice(0, 5), X = [...k].sort((e, t) => e.status === "pending" && t.status !== "pending" ? -1 : t.status === "pending" && e.status !== "pending" ? 1 : t.startDate.localeCompare(e.startDate)), { page: Z, pageSize: Q, offset: $, setPage: le } = x({ initialPageSize: 6 }), ue = X.slice($, $ + Q);
|
|
30
|
+
return /* @__PURE__ */ c("div", {
|
|
30
31
|
className: "space-y-6 p-6",
|
|
31
32
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
+
/* @__PURE__ */ c("div", {
|
|
33
34
|
className: "relative overflow-hidden rounded-xl border border-border-seam bg-gloss-card p-6",
|
|
34
|
-
children: [/* @__PURE__ */
|
|
35
|
+
children: [/* @__PURE__ */ s(re, { intensity: "subtle" }), /* @__PURE__ */ s("div", {
|
|
35
36
|
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
36
|
-
children: /* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */
|
|
37
|
+
children: /* @__PURE__ */ c("div", { children: [
|
|
38
|
+
/* @__PURE__ */ s("h1", {
|
|
38
39
|
className: "text-2xl font-semibold",
|
|
39
|
-
children: /* @__PURE__ */
|
|
40
|
+
children: /* @__PURE__ */ s(ae, { children: L("crewfoundry.dashboard.title", "Workforce Dashboard") })
|
|
40
41
|
}),
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
+
/* @__PURE__ */ s("p", {
|
|
42
43
|
className: "text-sm text-text-secondary",
|
|
43
|
-
children:
|
|
44
|
+
children: L("crewfoundry.dashboard.subtitle", "Overview of your organization's workforce metrics")
|
|
44
45
|
}),
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ s(y, {
|
|
46
47
|
className: "mt-2",
|
|
47
|
-
children:
|
|
48
|
+
children: L("crewfoundry.dashboard.purpose", "Your workforce command center — see headcount, hiring, performance, and projects at a glance, then jump straight to the area that needs your attention.")
|
|
48
49
|
})
|
|
49
50
|
] })
|
|
50
51
|
})]
|
|
51
52
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
+
/* @__PURE__ */ s(v, {
|
|
53
54
|
storageKey: "crewfoundry-dashboard",
|
|
54
55
|
steps: [
|
|
55
56
|
{
|
|
56
57
|
id: "employees",
|
|
57
|
-
label:
|
|
58
|
-
description:
|
|
59
|
-
icon: /* @__PURE__ */
|
|
60
|
-
onClick: () =>
|
|
58
|
+
label: L("crewfoundry.dashboard.next.employees", "Review your team"),
|
|
59
|
+
description: L("crewfoundry.dashboard.next.employeesDesc", "Open the employee directory to see who is active and on leave."),
|
|
60
|
+
icon: /* @__PURE__ */ s(o, { className: "h-4 w-4" }),
|
|
61
|
+
onClick: () => w("../../hr/employees-page")
|
|
61
62
|
},
|
|
62
63
|
{
|
|
63
64
|
id: "hiring",
|
|
64
|
-
label:
|
|
65
|
-
description:
|
|
66
|
-
icon: /* @__PURE__ */
|
|
67
|
-
onClick: () =>
|
|
65
|
+
label: L("crewfoundry.dashboard.next.hiring", "Post a new job"),
|
|
66
|
+
description: L("crewfoundry.dashboard.next.hiringDesc", "Create an opening to start collecting applicants."),
|
|
67
|
+
icon: /* @__PURE__ */ s(i, { className: "h-4 w-4" }),
|
|
68
|
+
onClick: () => w("../../hiring/create-job-page")
|
|
68
69
|
},
|
|
69
70
|
{
|
|
70
71
|
id: "projects",
|
|
71
|
-
label:
|
|
72
|
-
description:
|
|
73
|
-
icon: /* @__PURE__ */
|
|
74
|
-
onClick: () =>
|
|
72
|
+
label: L("crewfoundry.dashboard.next.projects", "Check active projects"),
|
|
73
|
+
description: L("crewfoundry.dashboard.next.projectsDesc", "Track progress and budgets across in-flight work."),
|
|
74
|
+
icon: /* @__PURE__ */ s(r, { className: "h-4 w-4" }),
|
|
75
|
+
onClick: () => w("../../projects/projects-page")
|
|
75
76
|
}
|
|
76
77
|
]
|
|
77
78
|
}),
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ c("div", {
|
|
79
80
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
|
|
80
81
|
children: [
|
|
81
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ c(g, {
|
|
82
83
|
treatment: "glass",
|
|
83
84
|
glow: !0,
|
|
84
85
|
className: "border-border-seam",
|
|
85
|
-
children: [/* @__PURE__ */
|
|
86
|
+
children: [/* @__PURE__ */ c(m, {
|
|
86
87
|
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
87
|
-
children: [/* @__PURE__ */
|
|
88
|
+
children: [/* @__PURE__ */ s(h, {
|
|
88
89
|
className: "text-sm font-medium",
|
|
89
|
-
children:
|
|
90
|
-
}), /* @__PURE__ */
|
|
91
|
-
}), /* @__PURE__ */
|
|
90
|
+
children: L("crewfoundry.dashboard.stats.totalEmployees", "Total Employees")
|
|
91
|
+
}), /* @__PURE__ */ s(o, { className: "h-4 w-4 text-text-secondary" })]
|
|
92
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ s("div", {
|
|
92
93
|
className: "text-2xl font-bold tabular-nums",
|
|
93
|
-
children:
|
|
94
|
-
}), /* @__PURE__ */
|
|
94
|
+
children: D.length
|
|
95
|
+
}), /* @__PURE__ */ c("p", {
|
|
95
96
|
className: "text-xs text-text-secondary",
|
|
96
97
|
children: [
|
|
97
|
-
|
|
98
|
+
R,
|
|
98
99
|
" ",
|
|
99
|
-
|
|
100
|
+
L("crewfoundry.dashboard.stats.active", "active"),
|
|
100
101
|
", ",
|
|
101
|
-
|
|
102
|
+
z,
|
|
102
103
|
" ",
|
|
103
|
-
|
|
104
|
+
L("crewfoundry.dashboard.stats.onLeave", "on leave")
|
|
104
105
|
]
|
|
105
106
|
})] })]
|
|
106
107
|
}),
|
|
107
|
-
/* @__PURE__ */
|
|
108
|
+
/* @__PURE__ */ c(g, {
|
|
108
109
|
treatment: "metric",
|
|
109
110
|
className: "border-border-seam",
|
|
110
|
-
children: [/* @__PURE__ */
|
|
111
|
+
children: [/* @__PURE__ */ c(m, {
|
|
111
112
|
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
112
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ s(h, {
|
|
113
114
|
className: "text-sm font-medium",
|
|
114
|
-
children:
|
|
115
|
-
}), /* @__PURE__ */
|
|
116
|
-
}), /* @__PURE__ */
|
|
115
|
+
children: L("crewfoundry.dashboard.stats.openPositions", "Open Positions")
|
|
116
|
+
}), /* @__PURE__ */ s(i, { className: "h-4 w-4 text-text-secondary" })]
|
|
117
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ s("div", {
|
|
117
118
|
className: "text-2xl font-bold tabular-nums",
|
|
118
|
-
children:
|
|
119
|
-
}), /* @__PURE__ */
|
|
119
|
+
children: B
|
|
120
|
+
}), /* @__PURE__ */ c("p", {
|
|
120
121
|
className: "text-xs text-text-secondary",
|
|
121
122
|
children: [
|
|
122
|
-
|
|
123
|
+
V,
|
|
123
124
|
" ",
|
|
124
|
-
|
|
125
|
+
L("crewfoundry.dashboard.stats.totalApplicants", "total applicants")
|
|
125
126
|
]
|
|
126
127
|
})] })]
|
|
127
128
|
}),
|
|
128
|
-
/* @__PURE__ */
|
|
129
|
+
/* @__PURE__ */ c(g, {
|
|
129
130
|
treatment: "metric",
|
|
130
131
|
className: "border-border-seam",
|
|
131
|
-
children: [/* @__PURE__ */
|
|
132
|
+
children: [/* @__PURE__ */ c(m, {
|
|
132
133
|
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
133
|
-
children: [/* @__PURE__ */
|
|
134
|
+
children: [/* @__PURE__ */ s(h, {
|
|
134
135
|
className: "text-sm font-medium",
|
|
135
|
-
children:
|
|
136
|
-
}), /* @__PURE__ */
|
|
137
|
-
}), /* @__PURE__ */
|
|
136
|
+
children: L("crewfoundry.dashboard.stats.avgPerformance", "Avg Performance")
|
|
137
|
+
}), /* @__PURE__ */ s(a, { className: "h-4 w-4 text-text-secondary" })]
|
|
138
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c("div", {
|
|
138
139
|
className: "text-2xl font-bold tabular-nums",
|
|
139
|
-
children: [
|
|
140
|
-
}), /* @__PURE__ */
|
|
140
|
+
children: [G, "/5"]
|
|
141
|
+
}), /* @__PURE__ */ s("p", {
|
|
141
142
|
className: "text-xs text-text-secondary",
|
|
142
|
-
children:
|
|
143
|
+
children: L("crewfoundry.dashboard.stats.performanceTrend", `Team average across ${D.length} employees`)
|
|
143
144
|
})] })]
|
|
144
145
|
}),
|
|
145
|
-
/* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ c(g, {
|
|
146
147
|
treatment: "metric",
|
|
147
148
|
className: "border-border-seam",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
149
|
+
children: [/* @__PURE__ */ c(m, {
|
|
149
150
|
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ s(h, {
|
|
151
152
|
className: "text-sm font-medium",
|
|
152
|
-
children:
|
|
153
|
-
}), /* @__PURE__ */
|
|
154
|
-
}), /* @__PURE__ */
|
|
153
|
+
children: L("crewfoundry.dashboard.stats.activeProjects", "Active Projects")
|
|
154
|
+
}), /* @__PURE__ */ s(r, { className: "h-4 w-4 text-text-secondary" })]
|
|
155
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ s("div", {
|
|
155
156
|
className: "text-2xl font-bold tabular-nums",
|
|
156
|
-
children:
|
|
157
|
-
}), /* @__PURE__ */
|
|
157
|
+
children: W
|
|
158
|
+
}), /* @__PURE__ */ c("p", {
|
|
158
159
|
className: "text-xs text-text-secondary",
|
|
159
160
|
children: [
|
|
160
|
-
|
|
161
|
+
H,
|
|
161
162
|
" ",
|
|
162
|
-
|
|
163
|
+
L("crewfoundry.dashboard.stats.pendingLeaveRequests", "pending leave requests")
|
|
163
164
|
]
|
|
164
165
|
})] })]
|
|
165
166
|
})
|
|
166
167
|
]
|
|
167
168
|
}),
|
|
168
|
-
/* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ c("div", {
|
|
169
170
|
className: "grid gap-4 md:grid-cols-7",
|
|
170
|
-
children: [/* @__PURE__ */
|
|
171
|
+
children: [/* @__PURE__ */ c(ie, {
|
|
171
172
|
className: "col-span-4",
|
|
172
173
|
children: [
|
|
173
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ s("div", {
|
|
174
175
|
className: "mb-1 text-lg font-semibold",
|
|
175
|
-
children:
|
|
176
|
+
children: L("crewfoundry.dashboard.departmentHeadcount.title", "Department Headcount")
|
|
176
177
|
}),
|
|
177
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ s("p", {
|
|
178
179
|
className: "mb-4 text-sm text-text-secondary",
|
|
179
|
-
children:
|
|
180
|
+
children: L("crewfoundry.dashboard.departmentHeadcount.description", "Employee distribution across departments")
|
|
180
181
|
}),
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ s("div", {
|
|
182
183
|
className: "space-y-3",
|
|
183
|
-
children: Object.entries(
|
|
184
|
+
children: Object.entries(K).sort(([, e], [, t]) => t - e).map(([e, t]) => /* @__PURE__ */ c("div", {
|
|
184
185
|
className: "flex items-center gap-3",
|
|
185
186
|
children: [
|
|
186
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ s("span", {
|
|
187
188
|
className: "w-24 text-sm text-text-secondary truncate",
|
|
188
189
|
children: e
|
|
189
190
|
}),
|
|
190
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ s("div", {
|
|
191
192
|
className: "flex-1 h-4 bg-bg-sunken rounded overflow-hidden",
|
|
192
|
-
children: /* @__PURE__ */
|
|
193
|
+
children: /* @__PURE__ */ s("div", {
|
|
193
194
|
className: "h-4 bg-action-primary-bg rounded",
|
|
194
|
-
style: { width: `${Math.round(t /
|
|
195
|
+
style: { width: `${Math.round(t / ce * 100)}%` }
|
|
195
196
|
})
|
|
196
197
|
}),
|
|
197
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ s("span", {
|
|
198
199
|
className: "text-sm font-medium w-8 text-right tabular-nums",
|
|
199
200
|
children: t
|
|
200
201
|
})
|
|
@@ -202,28 +203,28 @@ function w() {
|
|
|
202
203
|
}, e))
|
|
203
204
|
})
|
|
204
205
|
]
|
|
205
|
-
}), /* @__PURE__ */
|
|
206
|
+
}), /* @__PURE__ */ c(d, {
|
|
206
207
|
className: "col-span-3",
|
|
207
|
-
children: [/* @__PURE__ */
|
|
208
|
+
children: [/* @__PURE__ */ c(m, {
|
|
208
209
|
className: "flex flex-row items-center justify-between",
|
|
209
|
-
children: [/* @__PURE__ */
|
|
210
|
+
children: [/* @__PURE__ */ s(h, { children: L("crewfoundry.dashboard.notifications.title", "Recent Notifications") }), /* @__PURE__ */ c(l, {
|
|
210
211
|
variant: "secondary",
|
|
211
212
|
children: [
|
|
212
|
-
|
|
213
|
+
U,
|
|
213
214
|
" ",
|
|
214
|
-
|
|
215
|
+
L("crewfoundry.dashboard.notifications.unread", "unread")
|
|
215
216
|
]
|
|
216
217
|
})]
|
|
217
|
-
}), /* @__PURE__ */
|
|
218
|
+
}), /* @__PURE__ */ s(f, {
|
|
218
219
|
className: "space-y-4",
|
|
219
|
-
children:
|
|
220
|
+
children: A.slice(0, 5).map((e) => /* @__PURE__ */ c("div", {
|
|
220
221
|
className: "flex items-start gap-3",
|
|
221
|
-
children: [/* @__PURE__ */
|
|
222
|
+
children: [/* @__PURE__ */ s("div", { className: `mt-1 h-2 w-2 rounded-full flex-shrink-0 motion-safe:animate-vc-glow-pulse ${e.type === "success" ? "bg-status-success-text" : e.type === "warning" ? "bg-status-warning-text" : e.type === "error" ? "bg-status-error-text" : "bg-status-info-text"}` }), /* @__PURE__ */ c("div", {
|
|
222
223
|
className: "flex-1 min-w-0",
|
|
223
|
-
children: [/* @__PURE__ */
|
|
224
|
+
children: [/* @__PURE__ */ s("p", {
|
|
224
225
|
className: `text-sm ${e.read ? "text-text-secondary" : "font-medium"}`,
|
|
225
226
|
children: e.title
|
|
226
|
-
}), /* @__PURE__ */
|
|
227
|
+
}), /* @__PURE__ */ s("p", {
|
|
227
228
|
className: "text-xs text-text-secondary truncate",
|
|
228
229
|
children: e.message
|
|
229
230
|
})]
|
|
@@ -232,112 +233,112 @@ function w() {
|
|
|
232
233
|
})]
|
|
233
234
|
})]
|
|
234
235
|
}),
|
|
235
|
-
/* @__PURE__ */
|
|
236
|
+
/* @__PURE__ */ c("div", {
|
|
236
237
|
className: "grid gap-4 md:grid-cols-2",
|
|
237
|
-
children: [/* @__PURE__ */
|
|
238
|
+
children: [/* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(h, { children: L("crewfoundry.dashboard.upcomingInterviews.title", "Upcoming Interviews") }), /* @__PURE__ */ s(p, { children: L("crewfoundry.dashboard.upcomingInterviews.description", "Scheduled for this week") })] }), /* @__PURE__ */ c(f, {
|
|
238
239
|
className: "space-y-3",
|
|
239
240
|
children: [
|
|
240
|
-
|
|
241
|
+
Y.length === 0 && /* @__PURE__ */ s(_, {
|
|
241
242
|
illustration: "empty-data",
|
|
242
|
-
title:
|
|
243
|
-
description:
|
|
243
|
+
title: L("crewfoundry.dashboard.upcomingInterviews.emptyTitle", "No interviews scheduled"),
|
|
244
|
+
description: L("crewfoundry.dashboard.upcomingInterviews.emptyDescription", "Scheduled interviews will appear here.")
|
|
244
245
|
}),
|
|
245
|
-
|
|
246
|
+
Y.map((e) => /* @__PURE__ */ c("div", {
|
|
246
247
|
className: "flex items-center justify-between rounded border p-3",
|
|
247
|
-
children: [/* @__PURE__ */
|
|
248
|
+
children: [/* @__PURE__ */ c("div", {
|
|
248
249
|
className: "min-w-0",
|
|
249
|
-
children: [/* @__PURE__ */
|
|
250
|
+
children: [/* @__PURE__ */ s("p", {
|
|
250
251
|
className: "text-sm font-medium truncate",
|
|
251
252
|
children: e.candidateName
|
|
252
|
-
}), /* @__PURE__ */
|
|
253
|
+
}), /* @__PURE__ */ s("p", {
|
|
253
254
|
className: "text-xs text-text-secondary truncate",
|
|
254
255
|
children: e.position
|
|
255
256
|
})]
|
|
256
|
-
}), /* @__PURE__ */
|
|
257
|
+
}), /* @__PURE__ */ c("div", {
|
|
257
258
|
className: "flex items-center gap-2 flex-shrink-0",
|
|
258
|
-
children: [/* @__PURE__ */
|
|
259
|
+
children: [/* @__PURE__ */ c("div", {
|
|
259
260
|
className: "text-right",
|
|
260
|
-
children: [/* @__PURE__ */
|
|
261
|
+
children: [/* @__PURE__ */ s("p", {
|
|
261
262
|
className: "text-xs font-medium",
|
|
262
263
|
children: e.date
|
|
263
|
-
}), /* @__PURE__ */
|
|
264
|
+
}), /* @__PURE__ */ s("p", {
|
|
264
265
|
className: "text-xs text-text-secondary",
|
|
265
266
|
children: e.time
|
|
266
267
|
})]
|
|
267
|
-
}), /* @__PURE__ */
|
|
268
|
+
}), /* @__PURE__ */ s(l, {
|
|
268
269
|
variant: "outline",
|
|
269
270
|
className: "text-[10px]",
|
|
270
|
-
children: e.type
|
|
271
|
+
children: n(e.type)
|
|
271
272
|
})]
|
|
272
273
|
})]
|
|
273
274
|
}, e.id)),
|
|
274
|
-
|
|
275
|
+
J.length > Y.length && /* @__PURE__ */ s(u, {
|
|
275
276
|
variant: "ghost",
|
|
276
277
|
size: "sm",
|
|
277
278
|
className: "w-full",
|
|
278
|
-
onClick: () =>
|
|
279
|
-
children:
|
|
279
|
+
onClick: () => w("../../hiring/interviews-page"),
|
|
280
|
+
children: L("crewfoundry.dashboard.upcomingInterviews.viewAll", "View all interviews")
|
|
280
281
|
})
|
|
281
282
|
]
|
|
282
|
-
})] }), /* @__PURE__ */
|
|
283
|
+
})] }), /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(h, { children: L("crewfoundry.dashboard.leaveRequests.title", "Recent Leave Requests") }), /* @__PURE__ */ s(p, { children: L("crewfoundry.dashboard.leaveRequests.description", "Pending approval") })] }), /* @__PURE__ */ c(f, {
|
|
283
284
|
className: "space-y-3",
|
|
284
285
|
children: [
|
|
285
|
-
|
|
286
|
+
k.length === 0 && /* @__PURE__ */ s(_, {
|
|
286
287
|
illustration: "empty-data",
|
|
287
|
-
title:
|
|
288
|
-
description:
|
|
288
|
+
title: L("crewfoundry.dashboard.leaveRequests.emptyTitle", "No leave requests"),
|
|
289
|
+
description: L("crewfoundry.dashboard.leaveRequests.emptyDescription", "Pending leave requests will appear here.")
|
|
289
290
|
}),
|
|
290
|
-
|
|
291
|
+
ue.map((e) => /* @__PURE__ */ c("div", {
|
|
291
292
|
className: "flex items-center justify-between rounded border p-3",
|
|
292
|
-
children: [/* @__PURE__ */
|
|
293
|
+
children: [/* @__PURE__ */ s("div", {
|
|
293
294
|
className: "flex items-center gap-3",
|
|
294
|
-
children: /* @__PURE__ */
|
|
295
|
+
children: /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
295
296
|
className: "text-sm font-medium",
|
|
296
297
|
children: e.employeeName
|
|
297
|
-
}), /* @__PURE__ */
|
|
298
|
+
}), /* @__PURE__ */ c("div", {
|
|
298
299
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
299
|
-
children: [/* @__PURE__ */
|
|
300
|
+
children: [/* @__PURE__ */ s(te, { className: "h-3 w-3" }), /* @__PURE__ */ c("span", { children: [
|
|
300
301
|
e.startDate,
|
|
301
302
|
" - ",
|
|
302
303
|
e.endDate
|
|
303
304
|
] })]
|
|
304
305
|
})] })
|
|
305
|
-
}), /* @__PURE__ */
|
|
306
|
+
}), /* @__PURE__ */ c("div", {
|
|
306
307
|
className: "flex items-center gap-2",
|
|
307
308
|
children: [
|
|
308
|
-
e.status === "pending" && /* @__PURE__ */
|
|
309
|
+
e.status === "pending" && /* @__PURE__ */ c("div", {
|
|
309
310
|
className: "flex gap-1",
|
|
310
|
-
children: [/* @__PURE__ */
|
|
311
|
+
children: [/* @__PURE__ */ s(u, {
|
|
311
312
|
size: "sm",
|
|
312
313
|
variant: "outline",
|
|
313
314
|
className: "h-7 text-xs",
|
|
314
|
-
disabled:
|
|
315
|
-
onClick: () => void
|
|
316
|
-
children:
|
|
317
|
-
}), /* @__PURE__ */
|
|
315
|
+
disabled: N === e.id,
|
|
316
|
+
onClick: () => void I(e.id, "rejected"),
|
|
317
|
+
children: L("crewfoundry.dashboard.leaveRequests.reject", "Reject")
|
|
318
|
+
}), /* @__PURE__ */ s(u, {
|
|
318
319
|
size: "sm",
|
|
319
320
|
className: "h-7 text-xs",
|
|
320
|
-
disabled:
|
|
321
|
-
onClick: () => void
|
|
322
|
-
children:
|
|
321
|
+
disabled: N === e.id,
|
|
322
|
+
onClick: () => void I(e.id, "approved"),
|
|
323
|
+
children: L("crewfoundry.dashboard.leaveRequests.approve", "Approve")
|
|
323
324
|
})]
|
|
324
325
|
}),
|
|
325
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ s(l, {
|
|
326
327
|
variant: e.status === "approved" ? "default" : e.status === "pending" ? "secondary" : "destructive",
|
|
327
|
-
children: e.status
|
|
328
|
+
children: n(e.status)
|
|
328
329
|
}),
|
|
329
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ s(l, {
|
|
330
331
|
variant: "outline",
|
|
331
|
-
children: e.type
|
|
332
|
+
children: n(e.type)
|
|
332
333
|
})
|
|
333
334
|
]
|
|
334
335
|
})]
|
|
335
336
|
}, e.id)),
|
|
336
|
-
|
|
337
|
-
page:
|
|
337
|
+
X.length > Q && /* @__PURE__ */ s(b, {
|
|
338
|
+
page: Z,
|
|
338
339
|
pageSize: Q,
|
|
339
|
-
totalItems:
|
|
340
|
-
onPageChange:
|
|
340
|
+
totalItems: X.length,
|
|
341
|
+
onPageChange: le
|
|
341
342
|
})
|
|
342
343
|
]
|
|
343
344
|
})] })]
|
|
@@ -346,6 +347,6 @@ function w() {
|
|
|
346
347
|
});
|
|
347
348
|
}
|
|
348
349
|
//#endregion
|
|
349
|
-
export {
|
|
350
|
+
export { C as DashboardDashboardPagePage };
|
|
350
351
|
|
|
351
352
|
//# sourceMappingURL=DashboardDashboardPagePage.js.map
|