@burdenoff/microfe-crewfoundry 2026.802.1 → 2026.830.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.
Files changed (39) hide show
  1. package/dist/crewfoundry/CrewFoundryRoot.d.ts.map +1 -1
  2. package/dist/crewfoundry/CrewFoundryRoot.js +190 -185
  3. package/dist/crewfoundry/CrewFoundryRoot.js.map +1 -1
  4. package/dist/crewfoundry/components/forms/ConfirmDialog.d.ts.map +1 -1
  5. package/dist/crewfoundry/components/forms/ConfirmDialog.js +25 -24
  6. package/dist/crewfoundry/components/forms/ConfirmDialog.js.map +1 -1
  7. package/dist/crewfoundry/components/forms/FormModal.d.ts.map +1 -1
  8. package/dist/crewfoundry/components/forms/FormModal.js +103 -101
  9. package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
  10. package/dist/crewfoundry/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  11. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +207 -210
  12. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/HiringJobsPagePage.d.ts.map +1 -1
  14. package/dist/crewfoundry/pages/HiringJobsPagePage.js +75 -78
  15. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  16. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.d.ts.map +1 -1
  17. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +101 -104
  18. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
  20. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +95 -98
  21. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  22. package/dist/crewfoundry/pages/ProjectsResourcingPagePage.d.ts.map +1 -1
  23. package/dist/crewfoundry/pages/ProjectsResourcingPagePage.js +153 -69
  24. package/dist/crewfoundry/pages/ProjectsResourcingPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/TeamsTeamsPagePage.d.ts.map +1 -1
  26. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +101 -104
  27. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  28. package/dist/crewfoundry/store/crewfoundryStore.d.ts +9 -0
  29. package/dist/crewfoundry/store/crewfoundryStore.d.ts.map +1 -1
  30. package/dist/crewfoundry/store/crewfoundryStore.js +41 -32
  31. package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
  32. package/dist/shared/hooks/useTr.d.ts +17 -0
  33. package/dist/shared/hooks/useTr.d.ts.map +1 -0
  34. package/dist/shared/hooks/useTr.js +14 -0
  35. package/dist/shared/hooks/useTr.js.map +1 -0
  36. package/dist/utils/pageContext.d.ts.map +1 -1
  37. package/dist/utils/pageContext.js +20 -24
  38. package/dist/utils/pageContext.js.map +1 -1
  39. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import { create as e } from "zustand";
2
2
  import { graphqlFetch as t } from "@burdenoff/fe-libs/shared/graphql";
3
3
  //#region src/crewfoundry/store/crewfoundryStore.ts
4
- var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n employees { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate }\n departments { id name headId headName employeeCount budget location status }\n jobPostings { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits }\n candidates { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate }\n interviews { id candidateId candidateName position interviewerName date time type status feedback rating }\n announcements { id title content author authorRole category priority isPinned createdAt viewCount tags }\n teams { id name description leadId leadName members memberCount department status projectCount createdAt }\n projects { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks }\n leaveRequests { id employeeId employeeName department type startDate endDate days status reason approverName }\n timeEntries { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable }\n vendors { id name category contactPerson email phone status contractValue rating }\n clients { id name industry contactPerson email phone status revenue projects since }\n }\n }\n", r = "\n query CrewPayrollRecords {\n crewPayrollRecords { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod }\n }\n", i = "\n query CrewfoundryWorkspaceBootstrapWithOverlap(\n $workspaceId: ID!\n $projectPagination: PaginationInput\n $groupFirst: Int\n $conversationFirst: Int\n ) {\n crewfoundryBootstrap {\n employees { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate }\n departments { id name headId headName employeeCount budget location status }\n jobPostings { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits }\n candidates { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate }\n interviews { id candidateId candidateName position interviewerName date time type status feedback rating }\n announcements { id title content author authorRole category priority isPinned createdAt viewCount tags }\n teams { id name description leadId leadName members memberCount department status projectCount createdAt }\n projects { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks }\n leaveRequests { id employeeId employeeName department type startDate endDate days status reason approverName }\n timeEntries { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable }\n vendors { id name category contactPerson email phone status contractValue rating }\n clients { id name industry contactPerson email phone status revenue projects since }\n }\n projects(filter: { workspaceId: $workspaceId }, pagination: $projectPagination) {\n items {\n id\n name\n key\n creatorId\n status\n config\n archived\n createdAt\n updatedAt\n }\n }\n groups(first: $groupFirst) {\n edges {\n node {\n id\n name\n description\n groupType\n status\n memberCount\n ownerId\n createdAt\n }\n }\n }\n conversations(first: $conversationFirst) {\n edges {\n node {\n id\n title\n description\n state\n unreadCount\n memberCount\n updatedAt\n }\n }\n }\n }\n", a = "\n query CrewfoundryOverlapBilling {\n getBillingAccountsByOrg {\n id\n name\n isDefault\n paymentMethods {\n id\n type\n brand\n last4\n isDefault\n expiryMonth\n expiryYear\n }\n }\n }\n", o = "mutation CreateCrewEmployee($input: CreateCrewEmployeeInput!) { createCrewEmployee(input: $input) { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate } }", s = "mutation UpdateCrewEmployee($id: ID!, $input: UpdateCrewEmployeeInput!) { updateCrewEmployee(id: $id, input: $input) { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate } }", c = "mutation RemoveCrewEmployee($id: ID!) { removeCrewEmployee(id: $id) }", l = "mutation CreateCrewJobPosting($input: CreateCrewJobPostingInput!) { createCrewJobPosting(input: $input) { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits } }", u = "mutation UpdateCrewJobPosting($id: ID!, $input: UpdateCrewJobPostingInput!) { updateCrewJobPosting(id: $id, input: $input) { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits } }", d = "mutation CreateCrewCandidate($input: CreateCrewCandidateInput!) { createCrewCandidate(input: $input) { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } }", f = "mutation UpdateCrewCandidate($id: ID!, $input: UpdateCrewCandidateInput!) { updateCrewCandidate(id: $id, input: $input) { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } }", p = "mutation CreateCrewAnnouncement($input: CreateCrewAnnouncementInput!) { createCrewAnnouncement(input: $input) { id title content author authorRole category priority isPinned createdAt viewCount tags } }", m = "mutation CreateCrewLeaveRequest($input: CreateCrewLeaveRequestInput!) { createCrewLeaveRequest(input: $input) { id employeeId employeeName department type startDate endDate days status reason approverName } }", h = "mutation UpdateCrewLeaveRequest($id: ID!, $input: UpdateCrewLeaveRequestInput!) { updateCrewLeaveRequest(id: $id, input: $input) { id employeeId employeeName department type startDate endDate days status reason approverName } }", g = "mutation RemoveCrewJobPosting($id: ID!) { removeCrewJobPosting(id: $id) }", _ = "mutation RemoveCrewCandidate($id: ID!) { removeCrewCandidate(id: $id) }", v = "mutation UpdateCrewAnnouncement($id: ID!, $input: UpdateCrewAnnouncementInput!) { updateCrewAnnouncement(id: $id, input: $input) { id title content author authorRole category priority isPinned createdAt viewCount tags } }", y = "mutation RemoveCrewAnnouncement($id: ID!) { removeCrewAnnouncement(id: $id) }", b = "mutation CreateCrewInterview($input: CreateCrewInterviewInput!) { createCrewInterview(input: $input) { id candidateId candidateName position interviewerName date time type status feedback rating } }", x = "mutation UpdateCrewInterview($id: ID!, $input: UpdateCrewInterviewInput!) { updateCrewInterview(id: $id, input: $input) { id candidateId candidateName position interviewerName date time type status feedback rating } }", S = "mutation RemoveCrewInterview($id: ID!) { removeCrewInterview(id: $id) }", C = "mutation CreateCrewVendor($input: CreateCrewVendorInput!) { createCrewVendor(input: $input) { id name category contactPerson email phone status contractValue rating } }", w = "mutation UpdateCrewVendor($id: ID!, $input: UpdateCrewVendorInput!) { updateCrewVendor(id: $id, input: $input) { id name category contactPerson email phone status contractValue rating } }", T = "mutation RemoveCrewVendor($id: ID!) { removeCrewVendor(id: $id) }", E = "mutation CreateCrewClient($input: CreateCrewClientInput!) { createCrewClient(input: $input) { id name industry contactPerson email phone status revenue projects since } }", D = "mutation UpdateCrewClient($id: ID!, $input: UpdateCrewClientInput!) { updateCrewClient(id: $id, input: $input) { id name industry contactPerson email phone status revenue projects since } }", ee = "mutation RemoveCrewClient($id: ID!) { removeCrewClient(id: $id) }", te = "mutation CreateCrewTeam($input: CreateCrewTeamInput!) { createCrewTeam(input: $input) { id name description leadId leadName members memberCount department status projectCount createdAt } }", ne = "mutation UpdateCrewTeam($id: ID!, $input: UpdateCrewTeamInput!) { updateCrewTeam(id: $id, input: $input) { id name description leadId leadName members memberCount department status projectCount createdAt } }", re = "mutation RemoveCrewTeam($id: ID!) { removeCrewTeam(id: $id) }", ie = "mutation CreateCrewProject($input: CreateCrewProjectInput!) { createCrewProject(input: $input) { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks } }", ae = "mutation UpdateCrewProject($id: ID!, $input: UpdateCrewProjectInput!) { updateCrewProject(id: $id, input: $input) { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks } }", oe = "mutation RemoveCrewProject($id: ID!) { removeCrewProject(id: $id) }", se = "mutation CreateCrewDepartment($input: CreateCrewDepartmentInput!) { createCrewDepartment(input: $input) { id name headId headName employeeCount budget location status } }", ce = "mutation UpdateCrewDepartment($id: ID!, $input: UpdateCrewDepartmentInput!) { updateCrewDepartment(id: $id, input: $input) { id name headId headName employeeCount budget location status } }", le = "mutation RemoveCrewDepartment($id: ID!) { removeCrewDepartment(id: $id) }", ue = "mutation CreateCrewPayrollRecord($input: CreateCrewPayrollRecordInput!) { createCrewPayrollRecord(input: $input) { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod } }", de = "mutation UpdateCrewPayrollRecord($id: ID!, $input: UpdateCrewPayrollRecordInput!) { updateCrewPayrollRecord(id: $id, input: $input) { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod } }", fe = "mutation RemoveCrewPayrollRecord($id: ID!) { removeCrewPayrollRecord(id: $id) }", O = "id country currency period payDate status employeeCount totalGrossPay totalNetPay calculatedAt approvedAt approvedBy notes", k = `query CrewPayrollRuns { crewPayrollRuns { ${O} } }`, A = `mutation CreateCrewPayrollRun($input: CreateCrewPayrollRunInput!) { createCrewPayrollRun(input: $input) { ${O} } }`, j = `mutation CalculateCrewPayrollRun($id: ID!) { calculateCrewPayrollRun(id: $id) { ${O} } }`, M = `mutation ApproveCrewPayrollRun($id: ID!) { approveCrewPayrollRun(id: $id) { ${O} } }`, N = "mutation RemoveCrewPayrollRun($id: ID!) { removeCrewPayrollRun(id: $id) }", P = "query CrewPayslips($filter: CrewPayslipFilterInput) { crewPayslips(filter: $filter) { id payrollRunId employeeId employeeName country currency period annualGrossSalary grossPay taxableIncome incomeTax employeeSocialContrib employerSocialContrib otherDeductions netPay incomeTaxBrackets { label rate bandFrom bandTo taxableInBand taxOnBand } employeeContributions { label rate base amount } employerContributions { label rate base amount } otherDeductionLines { label rate base amount } assumptions } }", F = "mutation CreateCrewTimeEntry($input: CreateCrewTimeEntryInput!) { createCrewTimeEntry(input: $input) { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable } }", I = "mutation UpdateCrewTimeEntry($id: ID!, $input: UpdateCrewTimeEntryInput!) { updateCrewTimeEntry(id: $id, input: $input) { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable } }", L = "mutation RemoveCrewTimeEntry($id: ID!) { removeCrewTimeEntry(id: $id) }", R = "query CrewJobPostingMatches($jobPostingId: ID!, $filter: CrewCandidateMatchFilterInput, $limit: Int) { crewJobPostingMatches(jobPostingId: $jobPostingId, filter: $filter, limit: $limit) { candidateId jobPostingId score skillScore experienceScore matchedSkills missingSkills rationale candidate { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } } }", z = "query EmployeeDocuments($employeeId: ID!) { employeeDocuments(employeeId: $employeeId) { id employeeId fileId title category uploadedBy uploadedAt } }", B = "mutation AttachEmployeeDocument($input: AttachCrewEmployeeDocumentInput!) { attachEmployeeDocument(input: $input) { id employeeId fileId title category uploadedBy uploadedAt } }", V = "mutation DetachEmployeeDocument($id: ID!) { detachEmployeeDocument(id: $id) }", pe = "mutation EnsureFolderByPath($path: String!) { ensureFolderByPath(path: $path) { id } }", me = "mutation InitiateUpload($input: InitiateUploadInput!) { initiateUpload(input: $input) { session { id } uploadUrl } }", he = "mutation CompleteUpload($input: CompleteUploadInput!) { completeUpload(input: $input) { file { id } } }", ge = "query CrewOnboardings { crewOnboardings { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", _e = "mutation CreateCrewOnboarding($input: CreateCrewOnboardingInput!) { createCrewOnboarding(input: $input) { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", ve = "mutation UpdateCrewOnboarding($id: ID!, $input: UpdateCrewOnboardingInput!) { updateCrewOnboarding(id: $id, input: $input) { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", ye = "mutation RemoveCrewOnboarding($id: ID!) { removeCrewOnboarding(id: $id) }", be = "mutation CreateCrewOnboardingTask($input: CreateCrewOnboardingTaskInput!) { createCrewOnboardingTask(input: $input) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", xe = "mutation UpdateCrewOnboardingTask($id: ID!, $input: UpdateCrewOnboardingTaskInput!) { updateCrewOnboardingTask(id: $id, input: $input) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", Se = "mutation RemoveCrewOnboardingTask($id: ID!) { removeCrewOnboardingTask(id: $id) }", Ce = "mutation ToggleCrewOnboardingTask($id: ID!, $completed: Boolean!) { toggleCrewOnboardingTask(id: $id, completed: $completed) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", H = (e) => e.toUpperCase().replaceAll("-", "_"), U = (e) => /* @__PURE__ */ Error(`${e} isn't available in CrewFoundry.`), W = {
4
+ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n employees { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate }\n departments { id name headId headName employeeCount budget location status }\n jobPostings { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits }\n candidates { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate }\n interviews { id candidateId candidateName position interviewerName date time type status feedback rating }\n announcements { id title content author authorRole category priority isPinned createdAt viewCount tags }\n teams { id name description leadId leadName members memberCount department status projectCount createdAt }\n projects { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks }\n leaveRequests { id employeeId employeeName department type startDate endDate days status reason approverName }\n timeEntries { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable }\n vendors { id name category contactPerson email phone status contractValue rating }\n clients { id name industry contactPerson email phone status revenue projects since }\n }\n }\n", r = "\n query CrewPayrollRecords {\n crewPayrollRecords { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod }\n }\n", i = "\n query CrewfoundryWorkspaceBootstrapWithOverlap(\n $workspaceId: ID!\n $projectPagination: PaginationInput\n $groupFirst: Int\n $conversationFirst: Int\n ) {\n crewfoundryBootstrap {\n employees { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate }\n departments { id name headId headName employeeCount budget location status }\n jobPostings { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits }\n candidates { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate }\n interviews { id candidateId candidateName position interviewerName date time type status feedback rating }\n announcements { id title content author authorRole category priority isPinned createdAt viewCount tags }\n teams { id name description leadId leadName members memberCount department status projectCount createdAt }\n projects { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks }\n leaveRequests { id employeeId employeeName department type startDate endDate days status reason approverName }\n timeEntries { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable }\n vendors { id name category contactPerson email phone status contractValue rating }\n clients { id name industry contactPerson email phone status revenue projects since }\n }\n projects(filter: { workspaceId: $workspaceId }, pagination: $projectPagination) {\n items {\n id\n name\n key\n creatorId\n status\n config\n archived\n createdAt\n updatedAt\n }\n }\n groups(first: $groupFirst) {\n edges {\n node {\n id\n name\n description\n groupType\n status\n memberCount\n ownerId\n createdAt\n }\n }\n }\n conversations(first: $conversationFirst) {\n edges {\n node {\n id\n title\n description\n state\n unreadCount\n memberCount\n updatedAt\n }\n }\n }\n }\n", a = "\n query CrewfoundryOverlapBilling {\n getBillingAccountsByOrg {\n id\n name\n isDefault\n paymentMethods {\n id\n type\n brand\n last4\n isDefault\n expiryMonth\n expiryYear\n }\n }\n }\n", o = "mutation CreateCrewEmployee($input: CreateCrewEmployeeInput!) { createCrewEmployee(input: $input) { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate } }", s = "mutation UpdateCrewEmployee($id: ID!, $input: UpdateCrewEmployeeInput!) { updateCrewEmployee(id: $id, input: $input) { id firstName lastName email department position status type salary startDate avatar location managerId phone performanceScore skills terminationDate } }", c = "mutation RemoveCrewEmployee($id: ID!) { removeCrewEmployee(id: $id) }", l = "mutation CreateCrewJobPosting($input: CreateCrewJobPostingInput!) { createCrewJobPosting(input: $input) { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits } }", u = "mutation UpdateCrewJobPosting($id: ID!, $input: UpdateCrewJobPostingInput!) { updateCrewJobPosting(id: $id, input: $input) { id title department location type experienceLevel salaryMin salaryMax status applicants postedDate deadline description requirements benefits } }", d = "mutation CreateCrewCandidate($input: CreateCrewCandidateInput!) { createCrewCandidate(input: $input) { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } }", f = "mutation UpdateCrewCandidate($id: ID!, $input: UpdateCrewCandidateInput!) { updateCrewCandidate(id: $id, input: $input) { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } }", p = "mutation CreateCrewAnnouncement($input: CreateCrewAnnouncementInput!) { createCrewAnnouncement(input: $input) { id title content author authorRole category priority isPinned createdAt viewCount tags } }", m = "mutation CreateCrewLeaveRequest($input: CreateCrewLeaveRequestInput!) { createCrewLeaveRequest(input: $input) { id employeeId employeeName department type startDate endDate days status reason approverName } }", h = "mutation UpdateCrewLeaveRequest($id: ID!, $input: UpdateCrewLeaveRequestInput!) { updateCrewLeaveRequest(id: $id, input: $input) { id employeeId employeeName department type startDate endDate days status reason approverName } }", g = "mutation RemoveCrewJobPosting($id: ID!) { removeCrewJobPosting(id: $id) }", _ = "mutation RemoveCrewCandidate($id: ID!) { removeCrewCandidate(id: $id) }", v = "mutation UpdateCrewAnnouncement($id: ID!, $input: UpdateCrewAnnouncementInput!) { updateCrewAnnouncement(id: $id, input: $input) { id title content author authorRole category priority isPinned createdAt viewCount tags } }", y = "mutation RemoveCrewAnnouncement($id: ID!) { removeCrewAnnouncement(id: $id) }", b = "mutation CreateCrewInterview($input: CreateCrewInterviewInput!) { createCrewInterview(input: $input) { id candidateId candidateName position interviewerName date time type status feedback rating } }", x = "mutation UpdateCrewInterview($id: ID!, $input: UpdateCrewInterviewInput!) { updateCrewInterview(id: $id, input: $input) { id candidateId candidateName position interviewerName date time type status feedback rating } }", S = "mutation RemoveCrewInterview($id: ID!) { removeCrewInterview(id: $id) }", C = "mutation CreateCrewVendor($input: CreateCrewVendorInput!) { createCrewVendor(input: $input) { id name category contactPerson email phone status contractValue rating } }", w = "mutation UpdateCrewVendor($id: ID!, $input: UpdateCrewVendorInput!) { updateCrewVendor(id: $id, input: $input) { id name category contactPerson email phone status contractValue rating } }", T = "mutation RemoveCrewVendor($id: ID!) { removeCrewVendor(id: $id) }", E = "mutation CreateCrewClient($input: CreateCrewClientInput!) { createCrewClient(input: $input) { id name industry contactPerson email phone status revenue projects since } }", D = "mutation UpdateCrewClient($id: ID!, $input: UpdateCrewClientInput!) { updateCrewClient(id: $id, input: $input) { id name industry contactPerson email phone status revenue projects since } }", ee = "mutation RemoveCrewClient($id: ID!) { removeCrewClient(id: $id) }", te = "mutation CreateCrewTeam($input: CreateCrewTeamInput!) { createCrewTeam(input: $input) { id name description leadId leadName members memberCount department status projectCount createdAt } }", ne = "mutation UpdateCrewTeam($id: ID!, $input: UpdateCrewTeamInput!) { updateCrewTeam(id: $id, input: $input) { id name description leadId leadName members memberCount department status projectCount createdAt } }", re = "mutation RemoveCrewTeam($id: ID!) { removeCrewTeam(id: $id) }", ie = "mutation CreateCrewProject($input: CreateCrewProjectInput!) { createCrewProject(input: $input) { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks } }", ae = "mutation UpdateCrewProject($id: ID!, $input: UpdateCrewProjectInput!) { updateCrewProject(id: $id, input: $input) { id name description status priority startDate endDate progress budget spent teamId teamName managerId managerName tasks completedTasks } }", oe = "mutation RemoveCrewProject($id: ID!) { removeCrewProject(id: $id) }", se = "mutation CreateCrewDepartment($input: CreateCrewDepartmentInput!) { createCrewDepartment(input: $input) { id name headId headName employeeCount budget location status } }", ce = "mutation UpdateCrewDepartment($id: ID!, $input: UpdateCrewDepartmentInput!) { updateCrewDepartment(id: $id, input: $input) { id name headId headName employeeCount budget location status } }", le = "mutation RemoveCrewDepartment($id: ID!) { removeCrewDepartment(id: $id) }", ue = "mutation CreateCrewPayrollRecord($input: CreateCrewPayrollRecordInput!) { createCrewPayrollRecord(input: $input) { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod } }", de = "mutation UpdateCrewPayrollRecord($id: ID!, $input: UpdateCrewPayrollRecordInput!) { updateCrewPayrollRecord(id: $id, input: $input) { id employeeId employeeName department period grossPay deductions netPay status payDate paymentMethod } }", fe = "mutation RemoveCrewPayrollRecord($id: ID!) { removeCrewPayrollRecord(id: $id) }", O = "id country currency period payDate status employeeCount totalGrossPay totalNetPay calculatedAt approvedAt approvedBy notes", k = `query CrewPayrollRuns { crewPayrollRuns { ${O} } }`, A = `mutation CreateCrewPayrollRun($input: CreateCrewPayrollRunInput!) { createCrewPayrollRun(input: $input) { ${O} } }`, j = `mutation CalculateCrewPayrollRun($id: ID!) { calculateCrewPayrollRun(id: $id) { ${O} } }`, M = `mutation ApproveCrewPayrollRun($id: ID!) { approveCrewPayrollRun(id: $id) { ${O} } }`, N = "mutation RemoveCrewPayrollRun($id: ID!) { removeCrewPayrollRun(id: $id) }", P = "query CrewPayslips($filter: CrewPayslipFilterInput) { crewPayslips(filter: $filter) { id payrollRunId employeeId employeeName country currency period annualGrossSalary grossPay taxableIncome incomeTax employeeSocialContrib employerSocialContrib otherDeductions netPay incomeTaxBrackets { label rate bandFrom bandTo taxableInBand taxOnBand } employeeContributions { label rate base amount } employerContributions { label rate base amount } otherDeductionLines { label rate base amount } assumptions } }", F = "mutation CreateCrewTimeEntry($input: CreateCrewTimeEntryInput!) { createCrewTimeEntry(input: $input) { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable } }", I = "mutation UpdateCrewTimeEntry($id: ID!, $input: UpdateCrewTimeEntryInput!) { updateCrewTimeEntry(id: $id, input: $input) { id employeeId employeeName date clockIn clockOut totalHours overtime project status billable } }", L = "mutation RemoveCrewTimeEntry($id: ID!) { removeCrewTimeEntry(id: $id) }", R = "query CrewJobPostingMatches($jobPostingId: ID!, $filter: CrewCandidateMatchFilterInput, $limit: Int) { crewJobPostingMatches(jobPostingId: $jobPostingId, filter: $filter, limit: $limit) { candidateId jobPostingId score skillScore experienceScore matchedSkills missingSkills rationale candidate { id firstName lastName email phone position status appliedDate resumeUrl rating source experience skills currentCompany notes hiredDate } } }", z = "query CrewSkillsGap { crewSkillsGap { skill employeesWithSkill openJobsRequiringSkill shortage } }", B = "query EmployeeDocuments($employeeId: ID!) { employeeDocuments(employeeId: $employeeId) { id employeeId fileId title category uploadedBy uploadedAt } }", V = "mutation AttachEmployeeDocument($input: AttachCrewEmployeeDocumentInput!) { attachEmployeeDocument(input: $input) { id employeeId fileId title category uploadedBy uploadedAt } }", pe = "mutation DetachEmployeeDocument($id: ID!) { detachEmployeeDocument(id: $id) }", me = "mutation EnsureFolderByPath($path: String!) { ensureFolderByPath(path: $path) { id } }", he = "mutation InitiateUpload($input: InitiateUploadInput!) { initiateUpload(input: $input) { session { id } uploadUrl } }", ge = "mutation CompleteUpload($input: CompleteUploadInput!) { completeUpload(input: $input) { file { id } } }", _e = "query CrewOnboardings { crewOnboardings { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", ve = "mutation CreateCrewOnboarding($input: CreateCrewOnboardingInput!) { createCrewOnboarding(input: $input) { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", ye = "mutation UpdateCrewOnboarding($id: ID!, $input: UpdateCrewOnboardingInput!) { updateCrewOnboarding(id: $id, input: $input) { id candidateId employeeId fullName position department startDate status currentStage createdAt totalTaskCount completedTaskCount progressPercent tasks { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } } }", be = "mutation RemoveCrewOnboarding($id: ID!) { removeCrewOnboarding(id: $id) }", xe = "mutation CreateCrewOnboardingTask($input: CreateCrewOnboardingTaskInput!) { createCrewOnboardingTask(input: $input) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", Se = "mutation UpdateCrewOnboardingTask($id: ID!, $input: UpdateCrewOnboardingTaskInput!) { updateCrewOnboardingTask(id: $id, input: $input) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", Ce = "mutation RemoveCrewOnboardingTask($id: ID!) { removeCrewOnboardingTask(id: $id) }", we = "mutation ToggleCrewOnboardingTask($id: ID!, $completed: Boolean!) { toggleCrewOnboardingTask(id: $id, completed: $completed) { id onboardingId stage title assigneeActorId assigneeName dueDate completedAt sortOrder } }", H = (e) => e.toUpperCase().replaceAll("-", "_"), U = (e) => /* @__PURE__ */ Error(`${e} isn't available in CrewFoundry.`), W = {
5
5
  employee: ["status", "type"],
6
6
  department: ["status"],
7
7
  jobPosting: [
@@ -37,19 +37,19 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
37
37
  }, K = (e) => ({
38
38
  ...G(e, W.onboarding),
39
39
  tasks: (e.tasks ?? []).map((e) => G(e, W.onboardingTask))
40
- }), q = (e) => e ? e.slice(0, 10) : "TBD", we = (e) => !e || typeof e != "object" || Array.isArray(e) ? null : e, J = (e) => typeof e == "number" ? e : null, Y = (e) => typeof e == "string" ? e : null, Te = (e) => {
40
+ }), q = (e) => e ? e.slice(0, 10) : "TBD", Te = (e) => !e || typeof e != "object" || Array.isArray(e) ? null : e, J = (e) => typeof e == "number" ? e : null, Y = (e) => typeof e == "string" ? e : null, Ee = (e) => {
41
41
  let t = e.toLowerCase();
42
42
  return t === "active" ? "active" : t === "completed" ? "completed" : t === "cancelled" ? "cancelled" : t === "archived" ? "on_hold" : "planning";
43
- }, Ee = (e) => {
43
+ }, De = (e) => {
44
44
  let t = e.toLowerCase();
45
45
  return t === "active" ? "active" : t === "inactive" || t === "archived" || t === "deleted" ? "disbanded" : "forming";
46
- }, De = (e, t) => e.map((e, n) => {
47
- let r = we(e.config), i = J(r?.budget) ?? 25e3 + n * 2500, a = J(r?.spent) ?? Math.round(i * (e.status === "COMPLETED" ? 1 : .62)), o = J(r?.progress) ?? (e.status === "COMPLETED" ? 100 : 58), s = J(r?.tasks) ?? 20 + n % 9, c = J(r?.completedTasks) ?? Math.round(o / 100 * s), l = t[n % Math.max(t.length, 1)];
46
+ }, Oe = (e, t) => e.map((e, n) => {
47
+ let r = Te(e.config), i = J(r?.budget) ?? 25e3 + n * 2500, a = J(r?.spent) ?? Math.round(i * (e.status === "COMPLETED" ? 1 : .62)), o = J(r?.progress) ?? (e.status === "COMPLETED" ? 100 : 58), s = J(r?.tasks) ?? 20 + n % 9, c = J(r?.completedTasks) ?? Math.round(o / 100 * s), l = t[n % Math.max(t.length, 1)];
48
48
  return {
49
49
  id: e.id,
50
50
  name: e.name,
51
51
  description: Y(r?.description) || `${e.key} delivery plan`,
52
- status: Te(e.status),
52
+ status: Ee(e.status),
53
53
  priority: Y(r?.priority)?.toLowerCase() || "medium",
54
54
  startDate: q(e.createdAt),
55
55
  endDate: q(e.updatedAt),
@@ -63,7 +63,7 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
63
63
  tasks: s,
64
64
  completedTasks: c
65
65
  };
66
- }), Oe = (e) => e.map(({ node: e }) => ({
66
+ }), ke = (e) => e.map(({ node: e }) => ({
67
67
  id: e.id,
68
68
  name: e.name,
69
69
  description: e.description || `${e.name} team workspace`,
@@ -72,10 +72,10 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
72
72
  members: [],
73
73
  memberCount: e.memberCount,
74
74
  department: e.groupType?.toLowerCase().replaceAll("_", " ") || "operations",
75
- status: Ee(e.status),
75
+ status: De(e.status),
76
76
  projectCount: 0,
77
77
  createdAt: q(e.createdAt)
78
- })), ke = (e) => e.filter(({ node: e }) => e.unreadCount > 0).map(({ node: e }) => ({
78
+ })), Ae = (e) => e.filter(({ node: e }) => e.unreadCount > 0).map(({ node: e }) => ({
79
79
  id: `conversation-${e.id}`,
80
80
  title: e.title || "Conversation update",
81
81
  message: `${e.unreadCount} unread in ${e.memberCount}-member channel`,
@@ -84,7 +84,7 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
84
84
  read: !1,
85
85
  createdAt: e.updatedAt,
86
86
  actionUrl: "/crewfoundry/communications/messages-page"
87
- })), Ae = (e) => {
87
+ })), X = (e) => {
88
88
  let t = e.getBillingAccountsByOrg.find((e) => e?.isDefault && e?.id) || e.getBillingAccountsByOrg.find((e) => e?.id);
89
89
  return t?.id ? (t.paymentMethods || []).filter((e) => !!e).map((e) => {
90
90
  let n = e.expiryMonth ? String(e.expiryMonth).padStart(2, "0") : void 0, r = e.expiryYear ? String(e.expiryYear) : void 0, i = e.type === "BANK_TRANSFER" || e.type === "NETBANKING";
@@ -98,11 +98,11 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
98
98
  expiry: n && r ? `${n}/${r}` : void 0
99
99
  };
100
100
  }) : [];
101
- }, X = (e, t) => {
101
+ }, je = (e, t) => {
102
102
  if (e.errors?.length) throw Error(e.errors[0]?.message || t);
103
103
  if (!e.data) throw Error(t);
104
104
  return e.data;
105
- }, je = new Set([
105
+ }, Me = new Set([
106
106
  "id",
107
107
  "createdAt",
108
108
  "createdOn",
@@ -124,28 +124,28 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
124
124
  "viewCount",
125
125
  "revenue",
126
126
  "projects"
127
- ]), Me = (e) => {
127
+ ]), Ne = (e) => {
128
128
  if (!e) return e;
129
129
  let t = e.input;
130
130
  if (!t || typeof t != "object" || Array.isArray(t)) return e;
131
131
  let n = {};
132
- for (let [e, r] of Object.entries(t)) je.has(e) || (n[e] = r);
132
+ for (let [e, r] of Object.entries(t)) Me.has(e) || (n[e] = r);
133
133
  return {
134
134
  ...e,
135
135
  input: n
136
136
  };
137
- }, Z = async (e, n, r, i, a = "workspace") => X(await t({
137
+ }, Z = async (e, n, r, i, a = "workspace") => je(await t({
138
138
  gateway: a,
139
139
  query: e,
140
- variables: Me(n),
140
+ variables: Ne(n),
141
141
  authToken: r.authToken,
142
142
  baseUrl: a === "workspace" ? r.apiGatewayUrl : void 0,
143
143
  extraHeaders: { ...a === "workspace" && r.workspaceId ? { "x-workspace-id": r.workspaceId } : {} }
144
- }), i), Ne = () => !1, Q = async (e, t, n, r, i = "workspace") => {
144
+ }), i), Pe = () => !1, Q = async (e, t, n, r, i = "workspace") => {
145
145
  try {
146
146
  return await Z(e, t, n, r, i);
147
147
  } catch (e) {
148
- return Ne() && console.warn(`[crewfoundry] overlap query skipped: ${r}`, e), null;
148
+ return Pe() && console.warn(`[crewfoundry] overlap query skipped: ${r}`, e), null;
149
149
  }
150
150
  }, $ = e((e) => ({
151
151
  metrics: [
@@ -234,6 +234,8 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
234
234
  payrollRunsLoading: !1,
235
235
  payslipsByRun: {},
236
236
  payslipsLoading: !1,
237
+ skillsGap: [],
238
+ skillsGapLoaded: !1,
237
239
  initializeData: async (t) => {
238
240
  if (t.workspaceId) {
239
241
  e({
@@ -254,7 +256,7 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
254
256
  }, t, "Unable to load workspace bootstrap with overlap data"),
255
257
  Q(a, void 0, t, "Unable to load overlap billing data", "global"),
256
258
  Q(r, void 0, t, "Unable to load payroll records")
257
- ]), l = o ? o.crewfoundryBootstrap : (await Z(n, void 0, t, "Unable to load CrewFoundry data")).crewfoundryBootstrap, u = o ? Oe(o.groups.edges) : [], d = o ? De(o.projects.items, u) : [], f = o ? ke(o.conversations.edges) : [], p = u.length > 0 ? u : l.teams, m = d.length > 0 ? d : l.projects, h = f, g = s ? Ae(s) : [], _ = l.employees.map((e) => G(e, W.employee)), v = l.departments.map((e) => G(e, W.department)), y = l.jobPostings.map((e) => G(e, W.jobPosting)), b = l.candidates.map((e) => G(e, W.candidate)), x = l.interviews.map((e) => G(e, W.interview)), S = [], C = [], w = l.announcements.map((e) => G(e, W.announcement)), T = p.map((e) => G(e, W.team)), E = m.map((e) => G(e, W.project));
259
+ ]), l = o ? o.crewfoundryBootstrap : (await Z(n, void 0, t, "Unable to load CrewFoundry data")).crewfoundryBootstrap, u = o ? ke(o.groups.edges) : [], d = o ? Oe(o.projects.items, u) : [], f = o ? Ae(o.conversations.edges) : [], p = u.length > 0 ? u : l.teams, m = d.length > 0 ? d : l.projects, h = f, g = s ? X(s) : [], _ = l.employees.map((e) => G(e, W.employee)), v = l.departments.map((e) => G(e, W.department)), y = l.jobPostings.map((e) => G(e, W.jobPosting)), b = l.candidates.map((e) => G(e, W.candidate)), x = l.interviews.map((e) => G(e, W.interview)), S = [], C = [], w = l.announcements.map((e) => G(e, W.announcement)), T = p.map((e) => G(e, W.team)), E = m.map((e) => G(e, W.project));
258
260
  e({
259
261
  employees: _,
260
262
  departments: v,
@@ -685,11 +687,11 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
685
687
  }
686
688
  },
687
689
  fetchEmployeeDocuments: async (t) => {
688
- let n = $.getState().initParams, r = await Z(z, { employeeId: t }, n, "Unable to load employee documents");
690
+ let n = $.getState().initParams, r = await Z(B, { employeeId: t }, n, "Unable to load employee documents");
689
691
  e((e) => ({ employeeDocuments: [...e.employeeDocuments.filter((e) => e.employeeId !== t), ...r.employeeDocuments] }));
690
692
  },
691
693
  uploadEmployeeDocument: async ({ employeeId: t, file: n, title: r, category: i }) => {
692
- let a = $.getState().initParams, o = await Z(pe, { path: "/CrewFoundry/Employee Documents" }, a, "Unable to resolve the employee documents folder"), s = n.name.includes(".") ? n.name.substring(n.name.lastIndexOf(".") + 1) : "", c = await Z(me, { input: {
694
+ let a = $.getState().initParams, o = await Z(me, { path: "/CrewFoundry/Employee Documents" }, a, "Unable to resolve the employee documents folder"), s = n.name.includes(".") ? n.name.substring(n.name.lastIndexOf(".") + 1) : "", c = await Z(he, { input: {
693
695
  fileName: n.name,
694
696
  fileSize: String(n.size),
695
697
  mimeType: n.type || "application/octet-stream",
@@ -704,9 +706,9 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
704
706
  });
705
707
  if (!e.ok) throw Error(`Failed to upload file bytes (status ${e.status})`);
706
708
  }
707
- let l = await Z(B, { input: {
709
+ let l = await Z(V, { input: {
708
710
  employeeId: t,
709
- fileId: (await Z(he, { input: {
711
+ fileId: (await Z(ge, { input: {
710
712
  sessionId: c.initiateUpload.session.id,
711
713
  fileSize: String(n.size),
712
714
  folderId: o.ensureFolderByPath.id
@@ -718,21 +720,21 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
718
720
  },
719
721
  detachEmployeeDocument: async (t) => {
720
722
  let n = $.getState().initParams;
721
- await Z(V, { id: t }, n, "Unable to remove this document"), e((e) => ({ employeeDocuments: e.employeeDocuments.filter((e) => e.id !== t) }));
723
+ await Z(pe, { id: t }, n, "Unable to remove this document"), e((e) => ({ employeeDocuments: e.employeeDocuments.filter((e) => e.id !== t) }));
722
724
  },
723
725
  fetchOnboardings: async () => {
724
726
  let t = $.getState().initParams;
725
727
  e({
726
- onboardings: (await Z(ge, {}, t, "Unable to load onboarding")).crewOnboardings.map(K),
728
+ onboardings: (await Z(_e, {}, t, "Unable to load onboarding")).crewOnboardings.map(K),
727
729
  onboardingsLoaded: !0
728
730
  });
729
731
  },
730
732
  createOnboarding: async (t) => {
731
- let n = $.getState().initParams, r = await Z(_e, { input: t }, n, "Unable to start onboarding");
733
+ let n = $.getState().initParams, r = await Z(ve, { input: t }, n, "Unable to start onboarding");
732
734
  e((e) => ({ onboardings: [K(r.createCrewOnboarding), ...e.onboardings] }));
733
735
  },
734
736
  updateOnboarding: async (t, n) => {
735
- let r = $.getState().initParams, i = await Z(ve, {
737
+ let r = $.getState().initParams, i = await Z(ye, {
736
738
  id: t,
737
739
  input: n
738
740
  }, r, "Unable to update onboarding");
@@ -740,10 +742,10 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
740
742
  },
741
743
  removeOnboarding: async (t) => {
742
744
  let n = $.getState().initParams;
743
- await Z(ye, { id: t }, n, "Unable to remove onboarding"), e((e) => ({ onboardings: e.onboardings.filter((e) => e.id !== t) }));
745
+ await Z(be, { id: t }, n, "Unable to remove onboarding"), e((e) => ({ onboardings: e.onboardings.filter((e) => e.id !== t) }));
744
746
  },
745
747
  createOnboardingTask: async (t) => {
746
- let n = $.getState().initParams, r = G((await Z(be, { input: t }, n, "Unable to create onboarding task")).createCrewOnboardingTask, W.onboardingTask);
748
+ let n = $.getState().initParams, r = G((await Z(xe, { input: t }, n, "Unable to create onboarding task")).createCrewOnboardingTask, W.onboardingTask);
747
749
  e((e) => ({ onboardings: e.onboardings.map((e) => e.id === r.onboardingId ? {
748
750
  ...e,
749
751
  tasks: [...e.tasks, r],
@@ -751,7 +753,7 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
751
753
  } : e) }));
752
754
  },
753
755
  updateOnboardingTask: async (t, n) => {
754
- let r = $.getState().initParams, i = G((await Z(xe, {
756
+ let r = $.getState().initParams, i = G((await Z(Se, {
755
757
  id: t,
756
758
  input: n
757
759
  }, r, "Unable to update onboarding task")).updateCrewOnboardingTask, W.onboardingTask);
@@ -762,14 +764,14 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
762
764
  },
763
765
  removeOnboardingTask: async (t) => {
764
766
  let n = $.getState().initParams;
765
- await Z(Se, { id: t }, n, "Unable to remove onboarding task"), e((e) => ({ onboardings: e.onboardings.map((e) => e.tasks.some((e) => e.id === t) ? {
767
+ await Z(Ce, { id: t }, n, "Unable to remove onboarding task"), e((e) => ({ onboardings: e.onboardings.map((e) => e.tasks.some((e) => e.id === t) ? {
766
768
  ...e,
767
769
  tasks: e.tasks.filter((e) => e.id !== t),
768
770
  totalTaskCount: Math.max(0, e.totalTaskCount - 1)
769
771
  } : e) }));
770
772
  },
771
773
  toggleOnboardingTask: async (t, n) => {
772
- let r = $.getState().initParams, i = G((await Z(Ce, {
774
+ let r = $.getState().initParams, i = G((await Z(we, {
773
775
  id: t,
774
776
  completed: n
775
777
  }, r, "Unable to update onboarding task")).toggleCrewOnboardingTask, W.onboardingTask);
@@ -783,6 +785,13 @@ var n = "\n query CrewfoundryBootstrap {\n crewfoundryBootstrap {\n emp
783
785
  progressPercent: n.length === 0 ? 0 : Math.round(r / n.length * 1e3) / 10
784
786
  };
785
787
  }) }));
788
+ },
789
+ fetchSkillsGap: async () => {
790
+ let t = $.getState().initParams;
791
+ e({
792
+ skillsGap: (await Z(z, void 0, t, "Unable to load skills coverage")).crewSkillsGap,
793
+ skillsGapLoaded: !0
794
+ });
786
795
  }
787
796
  }));
788
797
  //#endregion