@burdenoff/microfe-crewfoundry 2026.608.1 → 2026.625.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +94 -78
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +112 -96
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +101 -85
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +131 -115
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +116 -100
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +15 -15
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +63 -51
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +16 -16
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +26 -26
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +28 -28
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +10 -10
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +71 -59
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +59 -47
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +77 -61
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +40 -40
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +13 -13
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +102 -86
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +173 -139
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +59 -59
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +113 -97
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +45 -45
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +85 -69
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +23 -23
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +40 -40
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +59 -47
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +52 -48
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +31 -26
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +61 -49
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +83 -67
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +90 -74
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +90 -74
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +83 -67
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +54 -42
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +16 -16
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +39 -35
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +24 -24
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +14 -14
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +81 -65
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +73 -57
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +28 -28
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +12 -12
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +75 -59
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +57 -45
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +71 -59
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +48 -48
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +44 -43
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +58 -46
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +16 -16
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +23 -23
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +9 -9
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +43 -39
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +31 -27
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +59 -47
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +13 -13
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +66 -50
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +18 -18
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +74 -62
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +21 -21
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +47 -43
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +20 -20
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +58 -46
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +38 -34
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +14 -14
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +67 -67
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +16 -16
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,11 +2,11 @@ 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
4
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
-
import { Badge as o, Button as s, Card as c, CardContent as l,
|
|
5
|
+
import { Badge as o, Button as s, Card as c, CardContent as l, GradientText as u, Input as d } 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 f() {
|
|
8
|
+
let { candidates: f } = e(), [p, m] = t(""), [h, g] = t("all"), _ = [...new Set(f.map((e) => e.status))], v = f.filter((e) => {
|
|
9
|
+
let t = `${e.firstName} ${e.lastName} ${e.position} ${e.email}`.toLowerCase().includes(p.toLowerCase()), n = h === "all" || e.status === h;
|
|
10
10
|
return t && n;
|
|
11
11
|
});
|
|
12
12
|
return /* @__PURE__ */ a("div", {
|
|
@@ -16,33 +16,33 @@ function d() {
|
|
|
16
16
|
className: "flex items-center justify-between",
|
|
17
17
|
children: /* @__PURE__ */ a("div", { children: [/* @__PURE__ */ i("h1", {
|
|
18
18
|
className: "text-2xl font-semibold",
|
|
19
|
-
children: "Candidates"
|
|
19
|
+
children: /* @__PURE__ */ i(u, { children: "Candidates" })
|
|
20
20
|
}), /* @__PURE__ */ a("p", {
|
|
21
|
-
className: "text-sm text-
|
|
22
|
-
children: [
|
|
21
|
+
className: "text-sm text-text-secondary",
|
|
22
|
+
children: [f.length, " candidates in pipeline"]
|
|
23
23
|
})] })
|
|
24
24
|
}),
|
|
25
25
|
/* @__PURE__ */ a("div", {
|
|
26
26
|
className: "flex gap-3 flex-wrap",
|
|
27
27
|
children: [/* @__PURE__ */ a("div", {
|
|
28
28
|
className: "relative flex-1 max-w-sm",
|
|
29
|
-
children: [/* @__PURE__ */ i(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-
|
|
29
|
+
children: [/* @__PURE__ */ i(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ i(d, {
|
|
30
30
|
placeholder: "Search candidates...",
|
|
31
31
|
className: "pl-9",
|
|
32
|
-
value:
|
|
33
|
-
onChange: (e) =>
|
|
32
|
+
value: p,
|
|
33
|
+
onChange: (e) => m(e.target.value)
|
|
34
34
|
})]
|
|
35
35
|
}), /* @__PURE__ */ a("div", {
|
|
36
36
|
className: "flex gap-1",
|
|
37
37
|
children: [/* @__PURE__ */ i(s, {
|
|
38
|
-
variant:
|
|
38
|
+
variant: h === "all" ? "default" : "outline",
|
|
39
39
|
size: "sm",
|
|
40
|
-
onClick: () =>
|
|
40
|
+
onClick: () => g("all"),
|
|
41
41
|
children: "All"
|
|
42
|
-
}),
|
|
43
|
-
variant:
|
|
42
|
+
}), _.map((e) => /* @__PURE__ */ i(s, {
|
|
43
|
+
variant: h === e ? "default" : "outline",
|
|
44
44
|
size: "sm",
|
|
45
|
-
onClick: () =>
|
|
45
|
+
onClick: () => g(e),
|
|
46
46
|
children: e
|
|
47
47
|
}, e))]
|
|
48
48
|
})]
|
|
@@ -50,7 +50,7 @@ function d() {
|
|
|
50
50
|
/* @__PURE__ */ i(c, { children: /* @__PURE__ */ a(l, {
|
|
51
51
|
className: "p-0",
|
|
52
52
|
children: [/* @__PURE__ */ a("div", {
|
|
53
|
-
className: "grid grid-cols-7 gap-2 text-xs font-medium text-
|
|
53
|
+
className: "grid grid-cols-7 gap-2 text-xs font-medium text-text-secondary p-4 border-b",
|
|
54
54
|
children: [
|
|
55
55
|
/* @__PURE__ */ i("span", { children: "Name" }),
|
|
56
56
|
/* @__PURE__ */ i("span", { children: "Position" }),
|
|
@@ -69,8 +69,8 @@ function d() {
|
|
|
69
69
|
children: "Status"
|
|
70
70
|
})
|
|
71
71
|
]
|
|
72
|
-
}),
|
|
73
|
-
className: "grid grid-cols-7 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-
|
|
72
|
+
}), v.map((e) => /* @__PURE__ */ a("div", {
|
|
73
|
+
className: "grid grid-cols-7 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50",
|
|
74
74
|
children: [
|
|
75
75
|
/* @__PURE__ */ a("div", { children: [/* @__PURE__ */ a("p", {
|
|
76
76
|
className: "font-medium",
|
|
@@ -80,11 +80,11 @@ function d() {
|
|
|
80
80
|
e.lastName
|
|
81
81
|
]
|
|
82
82
|
}), /* @__PURE__ */ i("p", {
|
|
83
|
-
className: "text-xs text-
|
|
83
|
+
className: "text-xs text-text-secondary",
|
|
84
84
|
children: e.email
|
|
85
85
|
})] }),
|
|
86
86
|
/* @__PURE__ */ i("span", {
|
|
87
|
-
className: "text-
|
|
87
|
+
className: "text-text-secondary",
|
|
88
88
|
children: e.position
|
|
89
89
|
}),
|
|
90
90
|
/* @__PURE__ */ i(o, {
|
|
@@ -98,10 +98,10 @@ function d() {
|
|
|
98
98
|
}),
|
|
99
99
|
/* @__PURE__ */ a("div", {
|
|
100
100
|
className: "flex items-center justify-center gap-1",
|
|
101
|
-
children: [/* @__PURE__ */ i(r, { className: "h-3 w-3 text-
|
|
101
|
+
children: [/* @__PURE__ */ i(r, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ i("span", { children: e.rating })]
|
|
102
102
|
}),
|
|
103
103
|
/* @__PURE__ */ i("span", {
|
|
104
|
-
className: "text-
|
|
104
|
+
className: "text-text-secondary text-xs",
|
|
105
105
|
children: e.appliedDate
|
|
106
106
|
}),
|
|
107
107
|
/* @__PURE__ */ i("div", {
|
|
@@ -119,6 +119,6 @@ function d() {
|
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
//#endregion
|
|
122
|
-
export {
|
|
122
|
+
export { f as HiringCandidatesPagePage };
|
|
123
123
|
|
|
124
124
|
//# 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 Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { Filter, Mail, Phone, Search, Star, Users } 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\">Candidates</h1>\n <p className=\"text-sm text-
|
|
1
|
+
{"version":3,"file":"HiringCandidatesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringCandidatesPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GradientText,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { Filter, Mail, Phone, Search, Star, Users } 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 </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 <Card>\n <CardContent className=\"p-0\">\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 </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
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, GradientText as p, Input as m, Textarea as h } 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 g() {
|
|
7
|
+
let [g, _] = e(""), [v, y] = e(""), [b, x] = e(""), [S, C] = e(""), [w, T] = e(""), [E, D] = e(""), [O, k] = e([""]), [A, j] = e([""]), M = () => k([...O, ""]), N = () => j([...A, ""]), P = (e, t) => {
|
|
8
|
+
let n = [...O];
|
|
9
|
+
n[e] = t, k(n);
|
|
10
|
+
}, F = (e, t) => {
|
|
11
|
+
let n = [...A];
|
|
12
|
+
n[e] = t, j(n);
|
|
13
|
+
}, I = (e) => k(O.filter((t, n) => n !== e)), L = (e) => j(A.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: [
|
|
@@ -18,9 +18,9 @@ function h() {
|
|
|
18
18
|
className: "flex items-center justify-between",
|
|
19
19
|
children: /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
20
20
|
className: "text-2xl font-semibold",
|
|
21
|
-
children: "Create Job Posting"
|
|
21
|
+
children: /* @__PURE__ */ a(p, { children: "Create Job Posting" })
|
|
22
22
|
}), /* @__PURE__ */ a("p", {
|
|
23
|
-
className: "text-sm text-
|
|
23
|
+
className: "text-sm text-text-secondary",
|
|
24
24
|
children: "Fill in the details for a new position"
|
|
25
25
|
})] })
|
|
26
26
|
}),
|
|
@@ -35,10 +35,10 @@ function h() {
|
|
|
35
35
|
children: [/* @__PURE__ */ a("label", {
|
|
36
36
|
className: "text-sm font-medium",
|
|
37
37
|
children: "Job Title"
|
|
38
|
-
}), /* @__PURE__ */ a(
|
|
38
|
+
}), /* @__PURE__ */ a(m, {
|
|
39
39
|
placeholder: "e.g. Senior Frontend Developer",
|
|
40
|
-
value:
|
|
41
|
-
onChange: (e) =>
|
|
40
|
+
value: g,
|
|
41
|
+
onChange: (e) => _(e.target.value)
|
|
42
42
|
})]
|
|
43
43
|
}),
|
|
44
44
|
/* @__PURE__ */ o("div", {
|
|
@@ -48,20 +48,20 @@ function h() {
|
|
|
48
48
|
children: [/* @__PURE__ */ a("label", {
|
|
49
49
|
className: "text-sm font-medium",
|
|
50
50
|
children: "Department"
|
|
51
|
-
}), /* @__PURE__ */ a(
|
|
51
|
+
}), /* @__PURE__ */ a(m, {
|
|
52
52
|
placeholder: "e.g. Engineering",
|
|
53
|
-
value:
|
|
54
|
-
onChange: (e) =>
|
|
53
|
+
value: v,
|
|
54
|
+
onChange: (e) => y(e.target.value)
|
|
55
55
|
})]
|
|
56
56
|
}), /* @__PURE__ */ o("div", {
|
|
57
57
|
className: "space-y-2",
|
|
58
58
|
children: [/* @__PURE__ */ a("label", {
|
|
59
59
|
className: "text-sm font-medium",
|
|
60
60
|
children: "Location"
|
|
61
|
-
}), /* @__PURE__ */ a(
|
|
61
|
+
}), /* @__PURE__ */ a(m, {
|
|
62
62
|
placeholder: "e.g. San Francisco, CA",
|
|
63
|
-
value:
|
|
64
|
-
onChange: (e) =>
|
|
63
|
+
value: b,
|
|
64
|
+
onChange: (e) => x(e.target.value)
|
|
65
65
|
})]
|
|
66
66
|
})]
|
|
67
67
|
}),
|
|
@@ -72,22 +72,22 @@ function h() {
|
|
|
72
72
|
children: [/* @__PURE__ */ a("label", {
|
|
73
73
|
className: "text-sm font-medium",
|
|
74
74
|
children: "Salary Min ($)"
|
|
75
|
-
}), /* @__PURE__ */ a(
|
|
75
|
+
}), /* @__PURE__ */ a(m, {
|
|
76
76
|
type: "number",
|
|
77
77
|
placeholder: "e.g. 120000",
|
|
78
|
-
value:
|
|
79
|
-
onChange: (e) =>
|
|
78
|
+
value: w,
|
|
79
|
+
onChange: (e) => T(e.target.value)
|
|
80
80
|
})]
|
|
81
81
|
}), /* @__PURE__ */ o("div", {
|
|
82
82
|
className: "space-y-2",
|
|
83
83
|
children: [/* @__PURE__ */ a("label", {
|
|
84
84
|
className: "text-sm font-medium",
|
|
85
85
|
children: "Salary Max ($)"
|
|
86
|
-
}), /* @__PURE__ */ a(
|
|
86
|
+
}), /* @__PURE__ */ a(m, {
|
|
87
87
|
type: "number",
|
|
88
88
|
placeholder: "e.g. 180000",
|
|
89
|
-
value:
|
|
90
|
-
onChange: (e) =>
|
|
89
|
+
value: E,
|
|
90
|
+
onChange: (e) => D(e.target.value)
|
|
91
91
|
})]
|
|
92
92
|
})]
|
|
93
93
|
}),
|
|
@@ -96,54 +96,54 @@ function h() {
|
|
|
96
96
|
children: [/* @__PURE__ */ a("label", {
|
|
97
97
|
className: "text-sm font-medium",
|
|
98
98
|
children: "Description"
|
|
99
|
-
}), /* @__PURE__ */ a(
|
|
99
|
+
}), /* @__PURE__ */ a(h, {
|
|
100
100
|
placeholder: "Describe the role, responsibilities, and ideal candidate...",
|
|
101
101
|
rows: 4,
|
|
102
|
-
value:
|
|
103
|
-
onChange: (e) =>
|
|
102
|
+
value: S,
|
|
103
|
+
onChange: (e) => C(e.target.value)
|
|
104
104
|
})]
|
|
105
105
|
})
|
|
106
106
|
]
|
|
107
107
|
})] }),
|
|
108
108
|
/* @__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
109
|
className: "space-y-3",
|
|
110
|
-
children: [
|
|
110
|
+
children: [O.map((e, t) => /* @__PURE__ */ o("div", {
|
|
111
111
|
className: "flex gap-2",
|
|
112
|
-
children: [/* @__PURE__ */ a(
|
|
112
|
+
children: [/* @__PURE__ */ a(m, {
|
|
113
113
|
placeholder: `Requirement ${t + 1}`,
|
|
114
114
|
value: e,
|
|
115
|
-
onChange: (e) =>
|
|
115
|
+
onChange: (e) => P(t, e.target.value)
|
|
116
116
|
}), /* @__PURE__ */ a(s, {
|
|
117
117
|
variant: "outline",
|
|
118
118
|
size: "sm",
|
|
119
|
-
onClick: () =>
|
|
119
|
+
onClick: () => I(t),
|
|
120
120
|
children: /* @__PURE__ */ a(i, { className: "h-4 w-4" })
|
|
121
121
|
})]
|
|
122
122
|
}, t)), /* @__PURE__ */ o(s, {
|
|
123
123
|
variant: "outline",
|
|
124
124
|
size: "sm",
|
|
125
|
-
onClick:
|
|
125
|
+
onClick: M,
|
|
126
126
|
children: [/* @__PURE__ */ a(n, { className: "h-4 w-4 mr-1" }), "Add Requirement"]
|
|
127
127
|
})]
|
|
128
128
|
})] }),
|
|
129
129
|
/* @__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
130
|
className: "space-y-3",
|
|
131
|
-
children: [
|
|
131
|
+
children: [A.map((e, t) => /* @__PURE__ */ o("div", {
|
|
132
132
|
className: "flex gap-2",
|
|
133
|
-
children: [/* @__PURE__ */ a(
|
|
133
|
+
children: [/* @__PURE__ */ a(m, {
|
|
134
134
|
placeholder: `Benefit ${t + 1}`,
|
|
135
135
|
value: e,
|
|
136
|
-
onChange: (e) =>
|
|
136
|
+
onChange: (e) => F(t, e.target.value)
|
|
137
137
|
}), /* @__PURE__ */ a(s, {
|
|
138
138
|
variant: "outline",
|
|
139
139
|
size: "sm",
|
|
140
|
-
onClick: () =>
|
|
140
|
+
onClick: () => L(t),
|
|
141
141
|
children: /* @__PURE__ */ a(i, { className: "h-4 w-4" })
|
|
142
142
|
})]
|
|
143
143
|
}, t)), /* @__PURE__ */ o(s, {
|
|
144
144
|
variant: "outline",
|
|
145
145
|
size: "sm",
|
|
146
|
-
onClick:
|
|
146
|
+
onClick: N,
|
|
147
147
|
children: [/* @__PURE__ */ a(n, { className: "h-4 w-4 mr-1" }), "Add Benefit"]
|
|
148
148
|
})]
|
|
149
149
|
})] }),
|
|
@@ -158,6 +158,6 @@ function h() {
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
//#endregion
|
|
161
|
-
export {
|
|
161
|
+
export { g as HiringCreateJobPagePage };
|
|
162
162
|
|
|
163
163
|
//# 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-muted-foreground\">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 Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GradientText,\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\">\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 </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,10 +1,10 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { Calendar as t, Clock as n, Plus as r, Star as i, Video as a } from "lucide-react";
|
|
3
3
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
-
import { Badge as c, Button as l, Card as u, CardContent as d, CardDescription as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, CardDescription as f, CardHeader as p, CardTitle as m, GlassCard as h, GradientText as g } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/HiringInterviewsPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { interviews:
|
|
6
|
+
function _() {
|
|
7
|
+
let { interviews: _ } = e(), v = _.filter((e) => e.status === "scheduled"), y = _.filter((e) => e.status === "completed");
|
|
8
8
|
return /* @__PURE__ */ s("div", {
|
|
9
9
|
className: "space-y-6 p-6",
|
|
10
10
|
children: [
|
|
@@ -12,13 +12,13 @@ function h() {
|
|
|
12
12
|
className: "flex items-center justify-between",
|
|
13
13
|
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
|
|
14
14
|
className: "text-2xl font-semibold",
|
|
15
|
-
children: "Interviews"
|
|
15
|
+
children: /* @__PURE__ */ o(g, { children: "Interviews" })
|
|
16
16
|
}), /* @__PURE__ */ s("p", {
|
|
17
|
-
className: "text-sm text-
|
|
17
|
+
className: "text-sm text-text-secondary",
|
|
18
18
|
children: [
|
|
19
|
-
|
|
19
|
+
v.length,
|
|
20
20
|
" upcoming · ",
|
|
21
|
-
|
|
21
|
+
y.length,
|
|
22
22
|
" completed"
|
|
23
23
|
]
|
|
24
24
|
})] }), /* @__PURE__ */ s(l, {
|
|
@@ -29,41 +29,53 @@ function h() {
|
|
|
29
29
|
/* @__PURE__ */ s("div", {
|
|
30
30
|
className: "grid gap-4 md:grid-cols-3",
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */ s(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
32
|
+
/* @__PURE__ */ s(h, {
|
|
33
|
+
treatment: "metric",
|
|
34
|
+
className: "border-border-seam",
|
|
35
|
+
children: [/* @__PURE__ */ s(p, {
|
|
36
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
37
|
+
children: [/* @__PURE__ */ o(m, {
|
|
38
|
+
className: "text-sm font-medium",
|
|
39
|
+
children: "Scheduled"
|
|
40
|
+
}), /* @__PURE__ */ o(t, { className: "h-4 w-4 text-status-info-text" })]
|
|
41
|
+
}), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
|
|
42
|
+
className: "text-2xl font-bold tabular-nums",
|
|
43
|
+
children: v.length
|
|
44
|
+
}) })]
|
|
45
|
+
}),
|
|
46
|
+
/* @__PURE__ */ s(h, {
|
|
47
|
+
treatment: "metric",
|
|
48
|
+
className: "border-border-seam",
|
|
49
|
+
children: [/* @__PURE__ */ s(p, {
|
|
50
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
51
|
+
children: [/* @__PURE__ */ o(m, {
|
|
52
|
+
className: "text-sm font-medium",
|
|
53
|
+
children: "Completed"
|
|
54
|
+
}), /* @__PURE__ */ o(n, { className: "h-4 w-4 text-status-success-text" })]
|
|
55
|
+
}), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
|
|
56
|
+
className: "text-2xl font-bold tabular-nums",
|
|
57
|
+
children: y.length
|
|
58
|
+
}) })]
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ s(h, {
|
|
61
|
+
treatment: "metric",
|
|
62
|
+
className: "border-border-seam",
|
|
63
|
+
children: [/* @__PURE__ */ s(p, {
|
|
64
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
65
|
+
children: [/* @__PURE__ */ o(m, {
|
|
66
|
+
className: "text-sm font-medium",
|
|
67
|
+
children: "This Week"
|
|
68
|
+
}), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-text-secondary" })]
|
|
69
|
+
}), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
|
|
70
|
+
className: "text-2xl font-bold tabular-nums",
|
|
71
|
+
children: v.length
|
|
72
|
+
}) })]
|
|
73
|
+
})
|
|
62
74
|
]
|
|
63
75
|
}),
|
|
64
76
|
/* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(p, { children: [/* @__PURE__ */ o(m, { children: "Upcoming Interviews" }), /* @__PURE__ */ o(f, { children: "Scheduled interviews for the coming days" })] }), /* @__PURE__ */ o(d, {
|
|
65
77
|
className: "space-y-3",
|
|
66
|
-
children:
|
|
78
|
+
children: v.map((e) => /* @__PURE__ */ s("div", {
|
|
67
79
|
className: "flex items-center justify-between rounded border p-4",
|
|
68
80
|
children: [/* @__PURE__ */ s("div", { children: [
|
|
69
81
|
/* @__PURE__ */ o("p", {
|
|
@@ -71,11 +83,11 @@ function h() {
|
|
|
71
83
|
children: e.candidateName
|
|
72
84
|
}),
|
|
73
85
|
/* @__PURE__ */ o("p", {
|
|
74
|
-
className: "text-xs text-
|
|
86
|
+
className: "text-xs text-text-secondary",
|
|
75
87
|
children: e.position
|
|
76
88
|
}),
|
|
77
89
|
/* @__PURE__ */ s("p", {
|
|
78
|
-
className: "text-xs text-
|
|
90
|
+
className: "text-xs text-text-secondary mt-1",
|
|
79
91
|
children: ["Interviewer: ", e.interviewerName]
|
|
80
92
|
})
|
|
81
93
|
] }), /* @__PURE__ */ s("div", {
|
|
@@ -87,7 +99,7 @@ function h() {
|
|
|
87
99
|
className: "text-sm font-medium",
|
|
88
100
|
children: e.date
|
|
89
101
|
}), /* @__PURE__ */ o("p", {
|
|
90
|
-
className: "text-xs text-
|
|
102
|
+
className: "text-xs text-text-secondary",
|
|
91
103
|
children: e.time
|
|
92
104
|
})]
|
|
93
105
|
}),
|
|
@@ -103,9 +115,9 @@ function h() {
|
|
|
103
115
|
})]
|
|
104
116
|
}, e.id))
|
|
105
117
|
})] }),
|
|
106
|
-
|
|
118
|
+
y.length > 0 && /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(p, { children: [/* @__PURE__ */ o(m, { children: "Completed Interviews" }), /* @__PURE__ */ o(f, { children: "Recent interview feedback" })] }), /* @__PURE__ */ o(d, {
|
|
107
119
|
className: "space-y-3",
|
|
108
|
-
children:
|
|
120
|
+
children: y.map((e) => /* @__PURE__ */ s("div", {
|
|
109
121
|
className: "flex items-center justify-between rounded border p-4",
|
|
110
122
|
children: [/* @__PURE__ */ s("div", { children: [
|
|
111
123
|
/* @__PURE__ */ o("p", {
|
|
@@ -113,11 +125,11 @@ function h() {
|
|
|
113
125
|
children: e.candidateName
|
|
114
126
|
}),
|
|
115
127
|
/* @__PURE__ */ o("p", {
|
|
116
|
-
className: "text-xs text-
|
|
128
|
+
className: "text-xs text-text-secondary",
|
|
117
129
|
children: e.position
|
|
118
130
|
}),
|
|
119
131
|
e.feedback && /* @__PURE__ */ s("p", {
|
|
120
|
-
className: "text-xs text-
|
|
132
|
+
className: "text-xs text-text-secondary mt-1 italic",
|
|
121
133
|
children: [
|
|
122
134
|
"\"",
|
|
123
135
|
e.feedback,
|
|
@@ -128,7 +140,7 @@ function h() {
|
|
|
128
140
|
className: "flex items-center gap-3",
|
|
129
141
|
children: [e.rating && /* @__PURE__ */ s("div", {
|
|
130
142
|
className: "flex items-center gap-1",
|
|
131
|
-
children: [/* @__PURE__ */ o(i, { className: "h-4 w-4 text-
|
|
143
|
+
children: [/* @__PURE__ */ o(i, { className: "h-4 w-4 text-status-warning-text" }), /* @__PURE__ */ s("span", {
|
|
132
144
|
className: "text-sm font-medium",
|
|
133
145
|
children: [e.rating, "/5"]
|
|
134
146
|
})]
|
|
@@ -143,6 +155,6 @@ function h() {
|
|
|
143
155
|
});
|
|
144
156
|
}
|
|
145
157
|
//#endregion
|
|
146
|
-
export {
|
|
158
|
+
export { _ as HiringInterviewsPagePage };
|
|
147
159
|
|
|
148
160
|
//# sourceMappingURL=HiringInterviewsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HiringInterviewsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringInterviewsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, Clock, Plus, Star, Video } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function HiringInterviewsPagePage() {\n const { interviews } = useCrewFoundryStore();\n\n const scheduled = interviews.filter((i) => i.status === 'scheduled');\n const completed = interviews.filter((i) => i.status === 'completed');\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\">Interviews</h1>\n <p className=\"text-sm text-
|
|
1
|
+
{"version":3,"file":"HiringInterviewsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringInterviewsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, Clock, Plus, Star, Video } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function HiringInterviewsPagePage() {\n const { interviews } = useCrewFoundryStore();\n\n const scheduled = interviews.filter((i) => i.status === 'scheduled');\n const completed = interviews.filter((i) => i.status === 'completed');\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>Interviews</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {scheduled.length} upcoming · {completed.length} completed\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Schedule Interview\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Scheduled</CardTitle>\n <Calendar className=\"h-4 w-4 text-status-info-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{scheduled.length}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Completed</CardTitle>\n <Clock className=\"h-4 w-4 text-status-success-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{completed.length}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">This Week</CardTitle>\n <Video className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{scheduled.length}</div>\n </CardContent>\n </GlassCard>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Upcoming Interviews</CardTitle>\n <CardDescription>Scheduled interviews for the coming days</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {scheduled.map((interview) => (\n <div\n key={interview.id}\n className=\"flex items-center justify-between rounded border p-4\"\n >\n <div>\n <p className=\"text-sm font-medium\">{interview.candidateName}</p>\n <p className=\"text-xs text-text-secondary\">{interview.position}</p>\n <p className=\"text-xs text-text-secondary mt-1\">\n Interviewer: {interview.interviewerName}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">{interview.date}</p>\n <p className=\"text-xs text-text-secondary\">{interview.time}</p>\n </div>\n <Badge variant=\"outline\">{interview.type}</Badge>\n <Badge variant=\"secondary\">{interview.status}</Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n {completed.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Completed Interviews</CardTitle>\n <CardDescription>Recent interview feedback</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {completed.map((interview) => (\n <div\n key={interview.id}\n className=\"flex items-center justify-between rounded border p-4\"\n >\n <div>\n <p className=\"text-sm font-medium\">{interview.candidateName}</p>\n <p className=\"text-xs text-text-secondary\">{interview.position}</p>\n {interview.feedback && (\n <p className=\"text-xs text-text-secondary mt-1 italic\">\n "{interview.feedback}"\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-3\">\n {interview.rating && (\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-4 w-4 text-status-warning-text\" />\n <span className=\"text-sm font-medium\">{interview.rating}/5</span>\n </div>\n )}\n <Badge variant=\"default\">completed</Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|