@burdenoff/microfe-crewfoundry 2026.624.1 → 2026.625.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/crewfoundry/pages/AdminAdminPagePage.js +100 -76
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +118 -94
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +105 -81
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +134 -110
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +121 -97
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +28 -15
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +74 -54
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +87 -69
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +99 -80
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +87 -68
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +31 -15
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +81 -61
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +71 -51
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +82 -58
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +46 -39
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +80 -62
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +104 -80
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +219 -151
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +183 -142
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +121 -97
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +57 -46
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +91 -67
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +112 -93
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +55 -48
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +70 -50
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +140 -97
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +101 -85
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +68 -48
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +99 -71
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +97 -73
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +100 -76
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +93 -69
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +65 -45
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +93 -75
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +117 -72
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +66 -54
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +36 -20
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +90 -66
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +81 -57
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +90 -65
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +33 -17
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +83 -59
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +68 -48
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +80 -60
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +153 -118
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +42 -37
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +67 -47
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +104 -85
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +76 -57
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +78 -60
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +138 -93
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +98 -53
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +69 -49
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +84 -65
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +76 -52
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +58 -40
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +85 -65
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +36 -29
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +108 -73
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +43 -27
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +67 -47
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +108 -63
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +83 -64
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +185 -144
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +40 -24
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,124 +1,143 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { useState as t } from "react";
|
|
3
3
|
import { Search as n, Star as r } from "lucide-react";
|
|
4
|
-
import {
|
|
5
|
-
import { Badge as
|
|
4
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as s, Button as c, CardContent as l, GlassCard as u, GradientText as d, IllustratedEmptyState as f, Input as p, PagePurpose as m } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/crewfoundry/pages/HiringCandidatesPagePage.tsx
|
|
7
|
-
function
|
|
8
|
-
let { candidates:
|
|
9
|
-
let t = `${e.firstName} ${e.lastName} ${e.position} ${e.email}`.toLowerCase().includes(
|
|
7
|
+
function h() {
|
|
8
|
+
let { candidates: h } = e(), [g, _] = t(""), [v, y] = t("all"), b = [...new Set(h.map((e) => e.status))], x = h.filter((e) => {
|
|
9
|
+
let t = `${e.firstName} ${e.lastName} ${e.position} ${e.email}`.toLowerCase().includes(g.toLowerCase()), n = v === "all" || e.status === v;
|
|
10
10
|
return t && n;
|
|
11
11
|
});
|
|
12
|
-
return /* @__PURE__ */
|
|
12
|
+
return /* @__PURE__ */ o("div", {
|
|
13
13
|
className: "space-y-6 p-6",
|
|
14
14
|
children: [
|
|
15
|
-
/* @__PURE__ */
|
|
15
|
+
/* @__PURE__ */ a("div", {
|
|
16
16
|
className: "flex items-center justify-between",
|
|
17
|
-
children: /* @__PURE__ */
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
children: /* @__PURE__ */ o("div", { children: [
|
|
18
|
+
/* @__PURE__ */ a("h1", {
|
|
19
|
+
className: "text-2xl font-semibold",
|
|
20
|
+
children: /* @__PURE__ */ a(d, { children: "Candidates" })
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ o("p", {
|
|
23
|
+
className: "text-sm text-text-secondary",
|
|
24
|
+
children: [h.length, " candidates in pipeline"]
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ a(m, {
|
|
27
|
+
className: "mt-1",
|
|
28
|
+
children: "Your candidate pool — search, filter, and evaluate the people you're considering so you can fill open roles with the right talent."
|
|
29
|
+
})
|
|
30
|
+
] })
|
|
24
31
|
}),
|
|
25
|
-
/* @__PURE__ */
|
|
32
|
+
/* @__PURE__ */ o("div", {
|
|
26
33
|
className: "flex gap-3 flex-wrap",
|
|
27
|
-
children: [/* @__PURE__ */
|
|
34
|
+
children: [/* @__PURE__ */ o("div", {
|
|
28
35
|
className: "relative flex-1 max-w-sm",
|
|
29
|
-
children: [/* @__PURE__ */
|
|
36
|
+
children: [/* @__PURE__ */ a(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ a(p, {
|
|
30
37
|
placeholder: "Search candidates...",
|
|
31
38
|
className: "pl-9",
|
|
32
|
-
value:
|
|
33
|
-
onChange: (e) =>
|
|
39
|
+
value: g,
|
|
40
|
+
onChange: (e) => _(e.target.value)
|
|
34
41
|
})]
|
|
35
|
-
}), /* @__PURE__ */
|
|
42
|
+
}), /* @__PURE__ */ o("div", {
|
|
36
43
|
className: "flex gap-1",
|
|
37
|
-
children: [/* @__PURE__ */
|
|
38
|
-
variant:
|
|
44
|
+
children: [/* @__PURE__ */ a(c, {
|
|
45
|
+
variant: v === "all" ? "default" : "outline",
|
|
39
46
|
size: "sm",
|
|
40
|
-
onClick: () =>
|
|
47
|
+
onClick: () => y("all"),
|
|
41
48
|
children: "All"
|
|
42
|
-
}),
|
|
43
|
-
variant:
|
|
49
|
+
}), b.map((e) => /* @__PURE__ */ a(c, {
|
|
50
|
+
variant: v === e ? "default" : "outline",
|
|
44
51
|
size: "sm",
|
|
45
|
-
onClick: () =>
|
|
52
|
+
onClick: () => y(e),
|
|
46
53
|
children: e
|
|
47
54
|
}, e))]
|
|
48
55
|
})]
|
|
49
56
|
}),
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/* @__PURE__ */ i("span", {
|
|
63
|
-
className: "text-center",
|
|
64
|
-
children: "Rating"
|
|
65
|
-
}),
|
|
66
|
-
/* @__PURE__ */ i("span", { children: "Applied" }),
|
|
67
|
-
/* @__PURE__ */ i("span", {
|
|
68
|
-
className: "text-center",
|
|
69
|
-
children: "Status"
|
|
57
|
+
/* @__PURE__ */ a(u, {
|
|
58
|
+
treatment: "glass",
|
|
59
|
+
glow: !0,
|
|
60
|
+
className: "border-border-seam",
|
|
61
|
+
children: /* @__PURE__ */ a(l, {
|
|
62
|
+
className: "p-0",
|
|
63
|
+
children: x.length === 0 ? /* @__PURE__ */ a("div", {
|
|
64
|
+
className: "p-6",
|
|
65
|
+
children: /* @__PURE__ */ a(f, {
|
|
66
|
+
illustration: "empty-search",
|
|
67
|
+
title: "No candidates match",
|
|
68
|
+
description: "Try a different search term or status filter."
|
|
70
69
|
})
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}),
|
|
90
|
-
/* @__PURE__ */ i(o, {
|
|
91
|
-
variant: "outline",
|
|
92
|
-
className: "w-fit h-fit text-[10px]",
|
|
93
|
-
children: e.source
|
|
94
|
-
}),
|
|
95
|
-
/* @__PURE__ */ a("span", {
|
|
96
|
-
className: "text-right",
|
|
97
|
-
children: [e.experience, " yrs"]
|
|
98
|
-
}),
|
|
99
|
-
/* @__PURE__ */ a("div", {
|
|
100
|
-
className: "flex items-center justify-center gap-1",
|
|
101
|
-
children: [/* @__PURE__ */ i(r, { className: "h-3 w-3 text-yellow-500" }), /* @__PURE__ */ i("span", { children: e.rating })]
|
|
102
|
-
}),
|
|
103
|
-
/* @__PURE__ */ i("span", {
|
|
104
|
-
className: "text-text-secondary text-xs",
|
|
105
|
-
children: e.appliedDate
|
|
106
|
-
}),
|
|
107
|
-
/* @__PURE__ */ i("div", {
|
|
108
|
-
className: "text-center",
|
|
109
|
-
children: /* @__PURE__ */ i(o, {
|
|
110
|
-
variant: e.status === "hired" || e.status === "offer" ? "default" : e.status === "rejected" ? "destructive" : "secondary",
|
|
111
|
-
className: "text-[10px]",
|
|
112
|
-
children: e.status
|
|
70
|
+
}) : /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("div", {
|
|
71
|
+
className: "grid grid-cols-7 gap-2 text-xs font-medium text-text-secondary p-4 border-b",
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ a("span", { children: "Name" }),
|
|
74
|
+
/* @__PURE__ */ a("span", { children: "Position" }),
|
|
75
|
+
/* @__PURE__ */ a("span", { children: "Source" }),
|
|
76
|
+
/* @__PURE__ */ a("span", {
|
|
77
|
+
className: "text-right",
|
|
78
|
+
children: "Experience"
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ a("span", {
|
|
81
|
+
className: "text-center",
|
|
82
|
+
children: "Rating"
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ a("span", { children: "Applied" }),
|
|
85
|
+
/* @__PURE__ */ a("span", {
|
|
86
|
+
className: "text-center",
|
|
87
|
+
children: "Status"
|
|
113
88
|
})
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
89
|
+
]
|
|
90
|
+
}), x.map((e) => /* @__PURE__ */ o("div", {
|
|
91
|
+
className: "grid grid-cols-7 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50",
|
|
92
|
+
children: [
|
|
93
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ o("p", {
|
|
94
|
+
className: "font-medium",
|
|
95
|
+
children: [
|
|
96
|
+
e.firstName,
|
|
97
|
+
" ",
|
|
98
|
+
e.lastName
|
|
99
|
+
]
|
|
100
|
+
}), /* @__PURE__ */ a("p", {
|
|
101
|
+
className: "text-xs text-text-secondary",
|
|
102
|
+
children: e.email
|
|
103
|
+
})] }),
|
|
104
|
+
/* @__PURE__ */ a("span", {
|
|
105
|
+
className: "text-text-secondary",
|
|
106
|
+
children: e.position
|
|
107
|
+
}),
|
|
108
|
+
/* @__PURE__ */ a(s, {
|
|
109
|
+
variant: "outline",
|
|
110
|
+
className: "w-fit h-fit text-[10px]",
|
|
111
|
+
children: e.source
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ o("span", {
|
|
114
|
+
className: "text-right",
|
|
115
|
+
children: [e.experience, " yrs"]
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ o("div", {
|
|
118
|
+
className: "flex items-center justify-center gap-1",
|
|
119
|
+
children: [/* @__PURE__ */ a(r, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ a("span", { children: e.rating })]
|
|
120
|
+
}),
|
|
121
|
+
/* @__PURE__ */ a("span", {
|
|
122
|
+
className: "text-text-secondary text-xs",
|
|
123
|
+
children: e.appliedDate
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ a("div", {
|
|
126
|
+
className: "text-center",
|
|
127
|
+
children: /* @__PURE__ */ a(s, {
|
|
128
|
+
variant: e.status === "hired" || e.status === "offer" ? "default" : e.status === "rejected" ? "destructive" : "secondary",
|
|
129
|
+
className: "text-[10px]",
|
|
130
|
+
children: e.status
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
]
|
|
134
|
+
}, e.id))] })
|
|
135
|
+
})
|
|
136
|
+
})
|
|
118
137
|
]
|
|
119
138
|
});
|
|
120
139
|
}
|
|
121
140
|
//#endregion
|
|
122
|
-
export {
|
|
141
|
+
export { h as HiringCandidatesPagePage };
|
|
123
142
|
|
|
124
143
|
//# sourceMappingURL=HiringCandidatesPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HiringCandidatesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringCandidatesPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n
|
|
1
|
+
{"version":3,"file":"HiringCandidatesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringCandidatesPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Input,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Search, Star } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function HiringCandidatesPagePage() {\n const { candidates } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const [filterStatus, setFilterStatus] = useState<string>('all');\n\n const statuses = [...new Set(candidates.map((c) => c.status))];\n const filtered = candidates.filter((c) => {\n const matchSearch = `${c.firstName} ${c.lastName} ${c.position} ${c.email}`\n .toLowerCase()\n .includes(search.toLowerCase());\n const matchStatus = filterStatus === 'all' || c.status === filterStatus;\n return matchSearch && matchStatus;\n });\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Candidates</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{candidates.length} candidates in pipeline</p>\n <PagePurpose className=\"mt-1\">Your candidate pool — search, filter, and evaluate the people you're considering so you can fill open roles with the right talent.</PagePurpose>\n </div>\n </div>\n\n <div className=\"flex gap-3 flex-wrap\">\n <div className=\"relative flex-1 max-w-sm\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search candidates...\"\n className=\"pl-9\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <div className=\"flex gap-1\">\n <Button\n variant={filterStatus === 'all' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setFilterStatus('all')}\n >\n All\n </Button>\n {statuses.map((status) => (\n <Button\n key={status}\n variant={filterStatus === status ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setFilterStatus(status)}\n >\n {status}\n </Button>\n ))}\n </div>\n </div>\n\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardContent className=\"p-0\">\n {filtered.length === 0 ? (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"No candidates match\"\n description=\"Try a different search term or status filter.\"\n />\n </div>\n ) : (\n <>\n <div className=\"grid grid-cols-7 gap-2 text-xs font-medium text-text-secondary p-4 border-b\">\n <span>Name</span>\n <span>Position</span>\n <span>Source</span>\n <span className=\"text-right\">Experience</span>\n <span className=\"text-center\">Rating</span>\n <span>Applied</span>\n <span className=\"text-center\">Status</span>\n </div>\n {filtered.map((candidate) => (\n <div\n key={candidate.id}\n className=\"grid grid-cols-7 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50\"\n >\n <div>\n <p className=\"font-medium\">\n {candidate.firstName} {candidate.lastName}\n </p>\n <p className=\"text-xs text-text-secondary\">{candidate.email}</p>\n </div>\n <span className=\"text-text-secondary\">{candidate.position}</span>\n <Badge variant=\"outline\" className=\"w-fit h-fit text-[10px]\">\n {candidate.source}\n </Badge>\n <span className=\"text-right\">{candidate.experience} yrs</span>\n <div className=\"flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n <span>{candidate.rating}</span>\n </div>\n <span className=\"text-text-secondary text-xs\">{candidate.appliedDate}</span>\n <div className=\"text-center\">\n <Badge\n variant={\n candidate.status === 'hired'\n ? 'default'\n : candidate.status === 'offer'\n ? 'default'\n : candidate.status === 'rejected'\n ? 'destructive'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {candidate.status}\n </Badge>\n </div>\n </div>\n ))}\n </>\n )}\n </CardContent>\n </GlassCard>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,33 +1,40 @@
|
|
|
1
1
|
import { useState as e } from "react";
|
|
2
2
|
import { Briefcase as t, Plus as n, Save as r, X as i } from "lucide-react";
|
|
3
3
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
-
import { Button as s, Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f,
|
|
4
|
+
import { Button as s, Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f, EmphasisPanel as p, GradientText as m, Input as h, PagePurpose as g, Textarea as _ } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/HiringCreateJobPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let [
|
|
8
|
-
let n = [...
|
|
9
|
-
n[e] = t,
|
|
10
|
-
},
|
|
11
|
-
let n = [...
|
|
12
|
-
n[e] = t,
|
|
13
|
-
},
|
|
6
|
+
function v() {
|
|
7
|
+
let [v, y] = e(""), [b, x] = e(""), [S, C] = e(""), [w, T] = e(""), [E, D] = e(""), [O, k] = e(""), [A, j] = e([""]), [M, N] = e([""]), P = () => j([...A, ""]), F = () => N([...M, ""]), I = (e, t) => {
|
|
8
|
+
let n = [...A];
|
|
9
|
+
n[e] = t, j(n);
|
|
10
|
+
}, L = (e, t) => {
|
|
11
|
+
let n = [...M];
|
|
12
|
+
n[e] = t, N(n);
|
|
13
|
+
}, R = (e) => j(A.filter((t, n) => n !== e)), z = (e) => N(M.filter((t, n) => n !== e));
|
|
14
14
|
return /* @__PURE__ */ o("div", {
|
|
15
15
|
className: "space-y-6 p-6 max-w-3xl",
|
|
16
16
|
children: [
|
|
17
17
|
/* @__PURE__ */ a("div", {
|
|
18
18
|
className: "flex items-center justify-between",
|
|
19
|
-
children: /* @__PURE__ */ o("div", { children: [
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
children: /* @__PURE__ */ o("div", { children: [
|
|
20
|
+
/* @__PURE__ */ a("h1", {
|
|
21
|
+
className: "text-2xl font-semibold",
|
|
22
|
+
children: /* @__PURE__ */ a(m, { children: "Create Job Posting" })
|
|
23
|
+
}),
|
|
24
|
+
/* @__PURE__ */ a("p", {
|
|
25
|
+
className: "text-sm text-text-secondary",
|
|
26
|
+
children: "Fill in the details for a new position"
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ a(g, {
|
|
29
|
+
className: "mt-1",
|
|
30
|
+
children: "Create a new job posting — define the role, requirements, and compensation here to start attracting and collecting applicants."
|
|
31
|
+
})
|
|
32
|
+
] })
|
|
26
33
|
}),
|
|
27
|
-
/* @__PURE__ */ o(
|
|
28
|
-
className: "flex items-center gap-2",
|
|
34
|
+
/* @__PURE__ */ o(p, { children: [/* @__PURE__ */ o("div", {
|
|
35
|
+
className: "mb-4 flex items-center gap-2 text-lg font-semibold",
|
|
29
36
|
children: [/* @__PURE__ */ a(t, { className: "h-5 w-5" }), "Job Details"]
|
|
30
|
-
})
|
|
37
|
+
}), /* @__PURE__ */ o("div", {
|
|
31
38
|
className: "space-y-4",
|
|
32
39
|
children: [
|
|
33
40
|
/* @__PURE__ */ o("div", {
|
|
@@ -35,10 +42,10 @@ function h() {
|
|
|
35
42
|
children: [/* @__PURE__ */ a("label", {
|
|
36
43
|
className: "text-sm font-medium",
|
|
37
44
|
children: "Job Title"
|
|
38
|
-
}), /* @__PURE__ */ a(
|
|
45
|
+
}), /* @__PURE__ */ a(h, {
|
|
39
46
|
placeholder: "e.g. Senior Frontend Developer",
|
|
40
|
-
value:
|
|
41
|
-
onChange: (e) =>
|
|
47
|
+
value: v,
|
|
48
|
+
onChange: (e) => y(e.target.value)
|
|
42
49
|
})]
|
|
43
50
|
}),
|
|
44
51
|
/* @__PURE__ */ o("div", {
|
|
@@ -48,20 +55,20 @@ function h() {
|
|
|
48
55
|
children: [/* @__PURE__ */ a("label", {
|
|
49
56
|
className: "text-sm font-medium",
|
|
50
57
|
children: "Department"
|
|
51
|
-
}), /* @__PURE__ */ a(
|
|
58
|
+
}), /* @__PURE__ */ a(h, {
|
|
52
59
|
placeholder: "e.g. Engineering",
|
|
53
|
-
value:
|
|
54
|
-
onChange: (e) =>
|
|
60
|
+
value: b,
|
|
61
|
+
onChange: (e) => x(e.target.value)
|
|
55
62
|
})]
|
|
56
63
|
}), /* @__PURE__ */ o("div", {
|
|
57
64
|
className: "space-y-2",
|
|
58
65
|
children: [/* @__PURE__ */ a("label", {
|
|
59
66
|
className: "text-sm font-medium",
|
|
60
67
|
children: "Location"
|
|
61
|
-
}), /* @__PURE__ */ a(
|
|
68
|
+
}), /* @__PURE__ */ a(h, {
|
|
62
69
|
placeholder: "e.g. San Francisco, CA",
|
|
63
|
-
value:
|
|
64
|
-
onChange: (e) =>
|
|
70
|
+
value: S,
|
|
71
|
+
onChange: (e) => C(e.target.value)
|
|
65
72
|
})]
|
|
66
73
|
})]
|
|
67
74
|
}),
|
|
@@ -72,22 +79,22 @@ function h() {
|
|
|
72
79
|
children: [/* @__PURE__ */ a("label", {
|
|
73
80
|
className: "text-sm font-medium",
|
|
74
81
|
children: "Salary Min ($)"
|
|
75
|
-
}), /* @__PURE__ */ a(
|
|
82
|
+
}), /* @__PURE__ */ a(h, {
|
|
76
83
|
type: "number",
|
|
77
84
|
placeholder: "e.g. 120000",
|
|
78
|
-
value:
|
|
79
|
-
onChange: (e) =>
|
|
85
|
+
value: E,
|
|
86
|
+
onChange: (e) => D(e.target.value)
|
|
80
87
|
})]
|
|
81
88
|
}), /* @__PURE__ */ o("div", {
|
|
82
89
|
className: "space-y-2",
|
|
83
90
|
children: [/* @__PURE__ */ a("label", {
|
|
84
91
|
className: "text-sm font-medium",
|
|
85
92
|
children: "Salary Max ($)"
|
|
86
|
-
}), /* @__PURE__ */ a(
|
|
93
|
+
}), /* @__PURE__ */ a(h, {
|
|
87
94
|
type: "number",
|
|
88
95
|
placeholder: "e.g. 180000",
|
|
89
|
-
value:
|
|
90
|
-
onChange: (e) =>
|
|
96
|
+
value: O,
|
|
97
|
+
onChange: (e) => k(e.target.value)
|
|
91
98
|
})]
|
|
92
99
|
})]
|
|
93
100
|
}),
|
|
@@ -96,54 +103,54 @@ function h() {
|
|
|
96
103
|
children: [/* @__PURE__ */ a("label", {
|
|
97
104
|
className: "text-sm font-medium",
|
|
98
105
|
children: "Description"
|
|
99
|
-
}), /* @__PURE__ */ a(
|
|
106
|
+
}), /* @__PURE__ */ a(_, {
|
|
100
107
|
placeholder: "Describe the role, responsibilities, and ideal candidate...",
|
|
101
108
|
rows: 4,
|
|
102
|
-
value:
|
|
103
|
-
onChange: (e) =>
|
|
109
|
+
value: w,
|
|
110
|
+
onChange: (e) => T(e.target.value)
|
|
104
111
|
})]
|
|
105
112
|
})
|
|
106
113
|
]
|
|
107
114
|
})] }),
|
|
108
115
|
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ o(d, { children: [/* @__PURE__ */ a(f, { children: "Requirements" }), /* @__PURE__ */ a(u, { children: "List the key requirements for this role" })] }), /* @__PURE__ */ o(l, {
|
|
109
116
|
className: "space-y-3",
|
|
110
|
-
children: [
|
|
117
|
+
children: [A.map((e, t) => /* @__PURE__ */ o("div", {
|
|
111
118
|
className: "flex gap-2",
|
|
112
|
-
children: [/* @__PURE__ */ a(
|
|
119
|
+
children: [/* @__PURE__ */ a(h, {
|
|
113
120
|
placeholder: `Requirement ${t + 1}`,
|
|
114
121
|
value: e,
|
|
115
|
-
onChange: (e) =>
|
|
122
|
+
onChange: (e) => I(t, e.target.value)
|
|
116
123
|
}), /* @__PURE__ */ a(s, {
|
|
117
124
|
variant: "outline",
|
|
118
125
|
size: "sm",
|
|
119
|
-
onClick: () =>
|
|
126
|
+
onClick: () => R(t),
|
|
120
127
|
children: /* @__PURE__ */ a(i, { className: "h-4 w-4" })
|
|
121
128
|
})]
|
|
122
129
|
}, t)), /* @__PURE__ */ o(s, {
|
|
123
130
|
variant: "outline",
|
|
124
131
|
size: "sm",
|
|
125
|
-
onClick:
|
|
132
|
+
onClick: P,
|
|
126
133
|
children: [/* @__PURE__ */ a(n, { className: "h-4 w-4 mr-1" }), "Add Requirement"]
|
|
127
134
|
})]
|
|
128
135
|
})] }),
|
|
129
136
|
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ o(d, { children: [/* @__PURE__ */ a(f, { children: "Benefits" }), /* @__PURE__ */ a(u, { children: "What does this position offer?" })] }), /* @__PURE__ */ o(l, {
|
|
130
137
|
className: "space-y-3",
|
|
131
|
-
children: [
|
|
138
|
+
children: [M.map((e, t) => /* @__PURE__ */ o("div", {
|
|
132
139
|
className: "flex gap-2",
|
|
133
|
-
children: [/* @__PURE__ */ a(
|
|
140
|
+
children: [/* @__PURE__ */ a(h, {
|
|
134
141
|
placeholder: `Benefit ${t + 1}`,
|
|
135
142
|
value: e,
|
|
136
|
-
onChange: (e) =>
|
|
143
|
+
onChange: (e) => L(t, e.target.value)
|
|
137
144
|
}), /* @__PURE__ */ a(s, {
|
|
138
145
|
variant: "outline",
|
|
139
146
|
size: "sm",
|
|
140
|
-
onClick: () =>
|
|
147
|
+
onClick: () => z(t),
|
|
141
148
|
children: /* @__PURE__ */ a(i, { className: "h-4 w-4" })
|
|
142
149
|
})]
|
|
143
150
|
}, t)), /* @__PURE__ */ o(s, {
|
|
144
151
|
variant: "outline",
|
|
145
152
|
size: "sm",
|
|
146
|
-
onClick:
|
|
153
|
+
onClick: F,
|
|
147
154
|
children: [/* @__PURE__ */ a(n, { className: "h-4 w-4 mr-1" }), "Add Benefit"]
|
|
148
155
|
})]
|
|
149
156
|
})] }),
|
|
@@ -158,6 +165,6 @@ function h() {
|
|
|
158
165
|
});
|
|
159
166
|
}
|
|
160
167
|
//#endregion
|
|
161
|
-
export {
|
|
168
|
+
export { v as HiringCreateJobPagePage };
|
|
162
169
|
|
|
163
170
|
//# sourceMappingURL=HiringCreateJobPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HiringCreateJobPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringCreateJobPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n Separator,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { Briefcase, Plus, Save, X } from 'lucide-react';\n\nexport function HiringCreateJobPagePage() {\n const [title, setTitle] = useState('');\n const [department, setDepartment] = useState('');\n const [location, setLocation] = useState('');\n const [description, setDescription] = useState('');\n const [salaryMin, setSalaryMin] = useState('');\n const [salaryMax, setSalaryMax] = useState('');\n const [requirements, setRequirements] = useState<string[]>(['']);\n const [benefits, setBenefits] = useState<string[]>(['']);\n\n const addRequirement = () => setRequirements([...requirements, '']);\n const addBenefit = () => setBenefits([...benefits, '']);\n const updateRequirement = (idx: number, value: string) => {\n const updated = [...requirements];\n updated[idx] = value;\n setRequirements(updated);\n };\n const updateBenefit = (idx: number, value: string) => {\n const updated = [...benefits];\n updated[idx] = value;\n setBenefits(updated);\n };\n const removeRequirement = (idx: number) =>\n setRequirements(requirements.filter((_, i) => i !== idx));\n const removeBenefit = (idx: number) => setBenefits(benefits.filter((_, i) => i !== idx));\n\n return (\n <div className=\"space-y-6 p-6 max-w-3xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Create Job Posting</h1>\n <p className=\"text-sm text-text-secondary\">Fill in the details for a new position</p>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Briefcase className=\"h-5 w-5\" />\n Job Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Job Title</label>\n <Input\n placeholder=\"e.g. Senior Frontend Developer\"\n value={title}\n onChange={(e) => setTitle(e.target.value)}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Department</label>\n <Input\n placeholder=\"e.g. Engineering\"\n value={department}\n onChange={(e) => setDepartment(e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Location</label>\n <Input\n placeholder=\"e.g. San Francisco, CA\"\n value={location}\n onChange={(e) => setLocation(e.target.value)}\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Salary Min ($)</label>\n <Input\n type=\"number\"\n placeholder=\"e.g. 120000\"\n value={salaryMin}\n onChange={(e) => setSalaryMin(e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Salary Max ($)</label>\n <Input\n type=\"number\"\n placeholder=\"e.g. 180000\"\n value={salaryMax}\n onChange={(e) => setSalaryMax(e.target.value)}\n />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Description</label>\n <Textarea\n placeholder=\"Describe the role, responsibilities, and ideal candidate...\"\n rows={4}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Requirements</CardTitle>\n <CardDescription>List the key requirements for this role</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {requirements.map((req, idx) => (\n <div key={idx} className=\"flex gap-2\">\n <Input\n placeholder={`Requirement ${idx + 1}`}\n value={req}\n onChange={(e) => updateRequirement(idx, e.target.value)}\n />\n <Button variant=\"outline\" size=\"sm\" onClick={() => removeRequirement(idx)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" size=\"sm\" onClick={addRequirement}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add Requirement\n </Button>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Benefits</CardTitle>\n <CardDescription>What does this position offer?</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {benefits.map((ben, idx) => (\n <div key={idx} className=\"flex gap-2\">\n <Input\n placeholder={`Benefit ${idx + 1}`}\n value={ben}\n onChange={(e) => updateBenefit(idx, e.target.value)}\n />\n <Button variant=\"outline\" size=\"sm\" onClick={() => removeBenefit(idx)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" size=\"sm\" onClick={addBenefit}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add Benefit\n </Button>\n </CardContent>\n </Card>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\">Save as Draft</Button>\n <Button>\n <Save className=\"h-4 w-4 mr-1\" />\n Publish Job\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HiringCreateJobPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringCreateJobPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n Input,\n PagePurpose,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { Briefcase, Plus, Save, X } from 'lucide-react';\n\nexport function HiringCreateJobPagePage() {\n const [title, setTitle] = useState('');\n const [department, setDepartment] = useState('');\n const [location, setLocation] = useState('');\n const [description, setDescription] = useState('');\n const [salaryMin, setSalaryMin] = useState('');\n const [salaryMax, setSalaryMax] = useState('');\n const [requirements, setRequirements] = useState<string[]>(['']);\n const [benefits, setBenefits] = useState<string[]>(['']);\n\n const addRequirement = () => setRequirements([...requirements, '']);\n const addBenefit = () => setBenefits([...benefits, '']);\n const updateRequirement = (idx: number, value: string) => {\n const updated = [...requirements];\n updated[idx] = value;\n setRequirements(updated);\n };\n const updateBenefit = (idx: number, value: string) => {\n const updated = [...benefits];\n updated[idx] = value;\n setBenefits(updated);\n };\n const removeRequirement = (idx: number) =>\n setRequirements(requirements.filter((_, i) => i !== idx));\n const removeBenefit = (idx: number) => setBenefits(benefits.filter((_, i) => i !== idx));\n\n return (\n <div className=\"space-y-6 p-6 max-w-3xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Create Job Posting</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Fill in the details for a new position</p>\n <PagePurpose className=\"mt-1\">Create a new job posting — define the role, requirements, and compensation here to start attracting and collecting applicants.</PagePurpose>\n </div>\n </div>\n\n <EmphasisPanel>\n <div className=\"mb-4 flex items-center gap-2 text-lg font-semibold\">\n <Briefcase className=\"h-5 w-5\" />\n Job Details\n </div>\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Job Title</label>\n <Input\n placeholder=\"e.g. Senior Frontend Developer\"\n value={title}\n onChange={(e) => setTitle(e.target.value)}\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Department</label>\n <Input\n placeholder=\"e.g. Engineering\"\n value={department}\n onChange={(e) => setDepartment(e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Location</label>\n <Input\n placeholder=\"e.g. San Francisco, CA\"\n value={location}\n onChange={(e) => setLocation(e.target.value)}\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Salary Min ($)</label>\n <Input\n type=\"number\"\n placeholder=\"e.g. 120000\"\n value={salaryMin}\n onChange={(e) => setSalaryMin(e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Salary Max ($)</label>\n <Input\n type=\"number\"\n placeholder=\"e.g. 180000\"\n value={salaryMax}\n onChange={(e) => setSalaryMax(e.target.value)}\n />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Description</label>\n <Textarea\n placeholder=\"Describe the role, responsibilities, and ideal candidate...\"\n rows={4}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n </div>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle>Requirements</CardTitle>\n <CardDescription>List the key requirements for this role</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {requirements.map((req, idx) => (\n <div key={idx} className=\"flex gap-2\">\n <Input\n placeholder={`Requirement ${idx + 1}`}\n value={req}\n onChange={(e) => updateRequirement(idx, e.target.value)}\n />\n <Button variant=\"outline\" size=\"sm\" onClick={() => removeRequirement(idx)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" size=\"sm\" onClick={addRequirement}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add Requirement\n </Button>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Benefits</CardTitle>\n <CardDescription>What does this position offer?</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {benefits.map((ben, idx) => (\n <div key={idx} className=\"flex gap-2\">\n <Input\n placeholder={`Benefit ${idx + 1}`}\n value={ben}\n onChange={(e) => updateBenefit(idx, e.target.value)}\n />\n <Button variant=\"outline\" size=\"sm\" onClick={() => removeBenefit(idx)}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" size=\"sm\" onClick={addBenefit}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add Benefit\n </Button>\n </CardContent>\n </Card>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\">Save as Draft</Button>\n <Button>\n <Save className=\"h-4 w-4 mr-1\" />\n Publish Job\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|