@burdenoff/microfe-crewfoundry 2026.1029.2 → 2026.1030.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/lib/useFocusedRecordParam.d.ts +51 -0
- package/dist/crewfoundry/lib/useFocusedRecordParam.d.ts.map +1 -0
- package/dist/crewfoundry/lib/useFocusedRecordParam.js +38 -0
- package/dist/crewfoundry/lib/useFocusedRecordParam.js.map +1 -0
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +119 -112
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +78 -71
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +88 -81
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +133 -126
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +150 -143
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +110 -103
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +173 -162
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +169 -158
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +179 -163
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/utils/pageContext.d.ts +43 -4
- package/dist/utils/pageContext.d.ts.map +1 -1
- package/dist/utils/pageContext.js +10 -3
- package/dist/utils/pageContext.js.map +1 -1
- package/package.json +3 -2
|
@@ -5,14 +5,15 @@ import { KanbanBoard as r } from "../components/viz/KanbanBoard.js";
|
|
|
5
5
|
import { RatingStars as i } from "../components/viz/RatingStars.js";
|
|
6
6
|
import "../components/viz/index.js";
|
|
7
7
|
import { FormModal as a } from "../components/forms/FormModal.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
8
|
+
import { useFocusedRecordParam as o } from "../lib/useFocusedRecordParam.js";
|
|
9
|
+
import { ConfirmDialog as s } from "../components/forms/ConfirmDialog.js";
|
|
10
|
+
import { getNumber as c, getTags as l, getText as u, newClientId as d } from "../components/forms/formValues.js";
|
|
11
|
+
import { useMemo as f, useState as p } from "react";
|
|
12
|
+
import { ArrowRightLeft as m, LayoutGrid as h, Pencil as g, Plus as _, Search as v, Table2 as y, Trash2 as b } from "lucide-react";
|
|
13
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
14
|
+
import { Badge as C, Button as w, CardContent as T, DropdownMenu as E, DropdownMenuContent as D, DropdownMenuItem as O, DropdownMenuLabel as k, DropdownMenuSeparator as A, DropdownMenuTrigger as j, GlassCard as M, GradientText as N, IllustratedEmptyState as P, Input as F, PagePurpose as ee, Pagination as te, ResponsiveTable as ne } from "@burdenoff/fe-libs/ui";
|
|
15
|
+
import { usePagination as re } from "@burdenoff/fe-libs/shared/hooks";
|
|
16
|
+
import { useGlobalUi as ie } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
16
17
|
//#region src/crewfoundry/pages/HiringCandidatesPagePage.tsx
|
|
17
18
|
var I = [
|
|
18
19
|
{
|
|
@@ -178,26 +179,26 @@ var I = [
|
|
|
178
179
|
skills: e.skills,
|
|
179
180
|
notes: e.notes
|
|
180
181
|
}), B = (e) => {
|
|
181
|
-
let t =
|
|
182
|
+
let t = u(e, "appliedDate");
|
|
182
183
|
return {
|
|
183
|
-
firstName:
|
|
184
|
-
lastName:
|
|
185
|
-
email:
|
|
186
|
-
phone:
|
|
187
|
-
position:
|
|
184
|
+
firstName: u(e, "firstName"),
|
|
185
|
+
lastName: u(e, "lastName"),
|
|
186
|
+
email: u(e, "email"),
|
|
187
|
+
phone: u(e, "phone"),
|
|
188
|
+
position: u(e, "position"),
|
|
188
189
|
status: e.status,
|
|
189
|
-
source:
|
|
190
|
-
experience:
|
|
191
|
-
currentCompany:
|
|
192
|
-
rating:
|
|
190
|
+
source: u(e, "source"),
|
|
191
|
+
experience: c(e, "experience"),
|
|
192
|
+
currentCompany: u(e, "currentCompany"),
|
|
193
|
+
rating: c(e, "rating"),
|
|
193
194
|
appliedDate: t.trim() === "" ? (/* @__PURE__ */ new Date()).toISOString().slice(0, 10) : t,
|
|
194
|
-
resumeUrl:
|
|
195
|
-
skills:
|
|
196
|
-
notes:
|
|
195
|
+
resumeUrl: u(e, "resumeUrl"),
|
|
196
|
+
skills: l(e, "skills"),
|
|
197
|
+
notes: u(e, "notes")
|
|
197
198
|
};
|
|
198
199
|
};
|
|
199
200
|
function V({ name: e, size: t = 36 }) {
|
|
200
|
-
return /* @__PURE__ */
|
|
201
|
+
return /* @__PURE__ */ x("span", {
|
|
201
202
|
className: "inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border-subtle bg-bg-sunken font-medium text-text-secondary",
|
|
202
203
|
style: {
|
|
203
204
|
width: t,
|
|
@@ -213,19 +214,19 @@ var H = [
|
|
|
213
214
|
key: "name",
|
|
214
215
|
header: "Name",
|
|
215
216
|
priority: "primary",
|
|
216
|
-
cell: (e) => /* @__PURE__ */
|
|
217
|
+
cell: (e) => /* @__PURE__ */ S("div", {
|
|
217
218
|
className: "flex items-center gap-2",
|
|
218
|
-
children: [/* @__PURE__ */
|
|
219
|
+
children: [/* @__PURE__ */ x(V, {
|
|
219
220
|
name: `${e.firstName} ${e.lastName}`,
|
|
220
221
|
size: 30
|
|
221
|
-
}), /* @__PURE__ */
|
|
222
|
+
}), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("p", {
|
|
222
223
|
className: "font-medium",
|
|
223
224
|
children: [
|
|
224
225
|
e.firstName,
|
|
225
226
|
" ",
|
|
226
227
|
e.lastName
|
|
227
228
|
]
|
|
228
|
-
}), /* @__PURE__ */
|
|
229
|
+
}), /* @__PURE__ */ x("p", {
|
|
229
230
|
className: "text-xs text-text-secondary",
|
|
230
231
|
children: e.email
|
|
231
232
|
})] })]
|
|
@@ -235,7 +236,7 @@ var H = [
|
|
|
235
236
|
key: "position",
|
|
236
237
|
header: "Position",
|
|
237
238
|
priority: "secondary",
|
|
238
|
-
cell: (e) => /* @__PURE__ */
|
|
239
|
+
cell: (e) => /* @__PURE__ */ x("span", {
|
|
239
240
|
className: "text-text-secondary",
|
|
240
241
|
children: e.position
|
|
241
242
|
})
|
|
@@ -244,7 +245,7 @@ var H = [
|
|
|
244
245
|
key: "source",
|
|
245
246
|
header: "Source",
|
|
246
247
|
priority: "secondary",
|
|
247
|
-
cell: (e) => /* @__PURE__ */
|
|
248
|
+
cell: (e) => /* @__PURE__ */ x(C, {
|
|
248
249
|
variant: "outline",
|
|
249
250
|
className: "w-fit h-fit text-[10px]",
|
|
250
251
|
children: e.source
|
|
@@ -254,13 +255,13 @@ var H = [
|
|
|
254
255
|
key: "experience",
|
|
255
256
|
header: "Experience",
|
|
256
257
|
priority: "secondary",
|
|
257
|
-
cell: (e) => /* @__PURE__ */
|
|
258
|
+
cell: (e) => /* @__PURE__ */ S("span", { children: [e.experience, " yrs"] })
|
|
258
259
|
},
|
|
259
260
|
{
|
|
260
261
|
key: "rating",
|
|
261
262
|
header: "Rating",
|
|
262
263
|
priority: "secondary",
|
|
263
|
-
cell: (e) => /* @__PURE__ */
|
|
264
|
+
cell: (e) => /* @__PURE__ */ x(i, {
|
|
264
265
|
value: e.rating,
|
|
265
266
|
size: 13
|
|
266
267
|
})
|
|
@@ -269,7 +270,7 @@ var H = [
|
|
|
269
270
|
key: "applied",
|
|
270
271
|
header: "Applied",
|
|
271
272
|
priority: "hidden-on-mobile",
|
|
272
|
-
cell: (e) => /* @__PURE__ */
|
|
273
|
+
cell: (e) => /* @__PURE__ */ x("span", {
|
|
273
274
|
className: "text-text-secondary text-xs",
|
|
274
275
|
children: e.appliedDate
|
|
275
276
|
})
|
|
@@ -278,7 +279,7 @@ var H = [
|
|
|
278
279
|
key: "status",
|
|
279
280
|
header: "Status",
|
|
280
281
|
priority: "secondary",
|
|
281
|
-
cell: (e) => /* @__PURE__ */
|
|
282
|
+
cell: (e) => /* @__PURE__ */ x(C, {
|
|
282
283
|
variant: e.status === "hired" || e.status === "offer" ? "default" : e.status === "rejected" ? "destructive" : "secondary",
|
|
283
284
|
className: "text-[10px]",
|
|
284
285
|
children: t(e.status)
|
|
@@ -286,175 +287,181 @@ var H = [
|
|
|
286
287
|
}
|
|
287
288
|
];
|
|
288
289
|
function U() {
|
|
289
|
-
let { showToast: n } =
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
let { showToast: n } = ie(), { candidates: i, addCandidate: c, updateCandidate: l, removeCandidate: u } = e(), [m, C] = p(""), [E, D] = p("board"), [O, k] = p("all"), { page: A, pageSize: j, offset: I, setPage: V } = re({ initialPageSize: 25 }), [U, G] = p(!1), [K, q] = p(null), [J, Y] = p(null);
|
|
291
|
+
o({
|
|
292
|
+
records: i,
|
|
293
|
+
activeId: K?.id ?? null,
|
|
294
|
+
onRestore: q
|
|
295
|
+
});
|
|
296
|
+
let ae = async (e) => {
|
|
297
|
+
await c({
|
|
298
|
+
id: d(),
|
|
292
299
|
...B(e)
|
|
293
300
|
}), n("Candidate added", "success");
|
|
294
|
-
},
|
|
295
|
-
K && (await
|
|
296
|
-
},
|
|
297
|
-
J && (await
|
|
298
|
-
},
|
|
301
|
+
}, oe = async (e) => {
|
|
302
|
+
K && (await l(K.id, B(e)), n("Candidate updated", "success"));
|
|
303
|
+
}, se = async () => {
|
|
304
|
+
J && (await u(J.id), n("Candidate removed", "success"));
|
|
305
|
+
}, ce = async (e, r) => {
|
|
299
306
|
if (e.status !== r) try {
|
|
300
|
-
await
|
|
307
|
+
await l(e.id, { status: r }), n(`${e.firstName} ${e.lastName} moved to ${t(r)}`, "success");
|
|
301
308
|
} catch {
|
|
302
309
|
n("Could not move candidate", "error");
|
|
303
310
|
}
|
|
304
|
-
},
|
|
305
|
-
let t =
|
|
311
|
+
}, X = m.toLowerCase(), Z = f(() => i.filter((e) => `${e.firstName} ${e.lastName} ${e.position} ${e.email}`.toLowerCase().includes(X)), [i, X]), Q = Z.filter((e) => O === "all" || e.status === O), le = Q.slice(I, I + j), $ = L.map((e) => {
|
|
312
|
+
let t = Z.filter((t) => t.status === e.key).sort((e, t) => t.rating - e.rating);
|
|
306
313
|
return {
|
|
307
314
|
id: e.key,
|
|
308
315
|
title: e.label,
|
|
309
316
|
accent: e.accent,
|
|
310
|
-
items: t.map((e) => /* @__PURE__ */
|
|
317
|
+
items: t.map((e) => /* @__PURE__ */ x(W, {
|
|
311
318
|
candidate: e,
|
|
312
|
-
onMove:
|
|
319
|
+
onMove: ce,
|
|
313
320
|
onEdit: () => q(e),
|
|
314
321
|
onDelete: () => Y(e)
|
|
315
322
|
}, e.id))
|
|
316
323
|
};
|
|
317
324
|
});
|
|
318
|
-
return /* @__PURE__ */
|
|
325
|
+
return /* @__PURE__ */ S("div", {
|
|
319
326
|
className: "space-y-6 p-6",
|
|
320
327
|
children: [
|
|
321
|
-
/* @__PURE__ */
|
|
328
|
+
/* @__PURE__ */ S("div", {
|
|
322
329
|
className: "flex flex-wrap items-start justify-between gap-3",
|
|
323
|
-
children: [/* @__PURE__ */
|
|
324
|
-
/* @__PURE__ */
|
|
330
|
+
children: [/* @__PURE__ */ S("div", { children: [
|
|
331
|
+
/* @__PURE__ */ x("h1", {
|
|
325
332
|
className: "text-2xl font-semibold",
|
|
326
|
-
children: /* @__PURE__ */
|
|
333
|
+
children: /* @__PURE__ */ x(N, { children: "Candidate Pipeline" })
|
|
327
334
|
}),
|
|
328
|
-
/* @__PURE__ */
|
|
335
|
+
/* @__PURE__ */ S("p", {
|
|
329
336
|
className: "text-sm text-text-secondary",
|
|
330
337
|
children: [i.length, " candidates in pipeline"]
|
|
331
338
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
339
|
+
/* @__PURE__ */ x(ee, {
|
|
333
340
|
className: "mt-1",
|
|
334
341
|
children: "Track every candidate as they move through your hiring stages — drag work through New, Screening, Interview, Assessment, Offer, and Hired to keep the pipeline flowing."
|
|
335
342
|
})
|
|
336
|
-
] }), /* @__PURE__ */
|
|
343
|
+
] }), /* @__PURE__ */ S(w, {
|
|
337
344
|
size: "sm",
|
|
338
345
|
onClick: () => G(!0),
|
|
339
|
-
children: [/* @__PURE__ */
|
|
346
|
+
children: [/* @__PURE__ */ x(_, { className: "h-4 w-4 mr-1" }), "Add Candidate"]
|
|
340
347
|
})]
|
|
341
348
|
}),
|
|
342
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ S("div", {
|
|
343
350
|
className: "flex flex-wrap items-center gap-3",
|
|
344
|
-
children: [/* @__PURE__ */
|
|
351
|
+
children: [/* @__PURE__ */ S("div", {
|
|
345
352
|
className: "relative flex-1 min-w-[12rem] max-w-sm",
|
|
346
|
-
children: [/* @__PURE__ */
|
|
353
|
+
children: [/* @__PURE__ */ x(v, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x(F, {
|
|
347
354
|
placeholder: "Search candidates...",
|
|
348
355
|
className: "pl-9",
|
|
349
|
-
value:
|
|
356
|
+
value: m,
|
|
350
357
|
onChange: (e) => {
|
|
351
|
-
|
|
358
|
+
C(e.target.value), V(1);
|
|
352
359
|
}
|
|
353
360
|
})]
|
|
354
|
-
}), /* @__PURE__ */
|
|
361
|
+
}), /* @__PURE__ */ S("div", {
|
|
355
362
|
className: "inline-flex items-center gap-1 rounded-full border border-border-subtle bg-bg-sunken p-1",
|
|
356
|
-
children: [/* @__PURE__ */
|
|
357
|
-
variant:
|
|
363
|
+
children: [/* @__PURE__ */ S(w, {
|
|
364
|
+
variant: E === "board" ? "default" : "ghost",
|
|
358
365
|
size: "sm",
|
|
359
366
|
className: "rounded-full",
|
|
360
|
-
onClick: () =>
|
|
361
|
-
children: [/* @__PURE__ */
|
|
362
|
-
}), /* @__PURE__ */
|
|
363
|
-
variant:
|
|
367
|
+
onClick: () => D("board"),
|
|
368
|
+
children: [/* @__PURE__ */ x(h, { className: "h-4 w-4 mr-1" }), "Board"]
|
|
369
|
+
}), /* @__PURE__ */ S(w, {
|
|
370
|
+
variant: E === "table" ? "default" : "ghost",
|
|
364
371
|
size: "sm",
|
|
365
372
|
className: "rounded-full",
|
|
366
|
-
onClick: () =>
|
|
367
|
-
children: [/* @__PURE__ */ y
|
|
373
|
+
onClick: () => D("table"),
|
|
374
|
+
children: [/* @__PURE__ */ x(y, { className: "h-4 w-4 mr-1" }), "Table"]
|
|
368
375
|
})]
|
|
369
376
|
})]
|
|
370
377
|
}),
|
|
371
|
-
i.length === 0 ? /* @__PURE__ */
|
|
378
|
+
i.length === 0 ? /* @__PURE__ */ x(M, {
|
|
372
379
|
treatment: "glass",
|
|
373
380
|
className: "border-border-seam",
|
|
374
|
-
children: /* @__PURE__ */
|
|
381
|
+
children: /* @__PURE__ */ x(T, {
|
|
375
382
|
className: "p-4",
|
|
376
|
-
children: /* @__PURE__ */
|
|
383
|
+
children: /* @__PURE__ */ x(P, {
|
|
377
384
|
illustration: "empty-search",
|
|
378
385
|
title: "No candidates yet",
|
|
379
386
|
description: "Add your first candidate to start building the pipeline."
|
|
380
387
|
})
|
|
381
388
|
})
|
|
382
|
-
}) :
|
|
383
|
-
columns:
|
|
389
|
+
}) : E === "board" ? /* @__PURE__ */ x(r, {
|
|
390
|
+
columns: $,
|
|
384
391
|
emptyColumnHint: "No candidates in this stage"
|
|
385
|
-
}) : /* @__PURE__ */
|
|
392
|
+
}) : /* @__PURE__ */ x(M, {
|
|
386
393
|
treatment: "glass",
|
|
387
394
|
glow: !0,
|
|
388
395
|
className: "border-border-seam",
|
|
389
|
-
children: /* @__PURE__ */
|
|
396
|
+
children: /* @__PURE__ */ S(T, {
|
|
390
397
|
className: "p-4",
|
|
391
398
|
children: [
|
|
392
|
-
/* @__PURE__ */
|
|
399
|
+
/* @__PURE__ */ S("div", {
|
|
393
400
|
className: "mb-3 flex flex-wrap gap-1",
|
|
394
|
-
children: [/* @__PURE__ */
|
|
395
|
-
variant:
|
|
401
|
+
children: [/* @__PURE__ */ x(w, {
|
|
402
|
+
variant: O === "all" ? "default" : "outline",
|
|
396
403
|
size: "sm",
|
|
397
404
|
onClick: () => {
|
|
398
|
-
|
|
405
|
+
k("all"), V(1);
|
|
399
406
|
},
|
|
400
407
|
children: "All"
|
|
401
|
-
}), L.map((e) => /* @__PURE__ */
|
|
402
|
-
variant:
|
|
408
|
+
}), L.map((e) => /* @__PURE__ */ x(w, {
|
|
409
|
+
variant: O === e.key ? "default" : "outline",
|
|
403
410
|
size: "sm",
|
|
404
411
|
onClick: () => {
|
|
405
|
-
|
|
412
|
+
k(e.key), V(1);
|
|
406
413
|
},
|
|
407
414
|
children: e.label
|
|
408
415
|
}, e.key))]
|
|
409
416
|
}),
|
|
410
|
-
/* @__PURE__ */
|
|
411
|
-
data:
|
|
417
|
+
/* @__PURE__ */ x(ne, {
|
|
418
|
+
data: le,
|
|
412
419
|
rowKey: (e) => e.id,
|
|
413
420
|
columns: H,
|
|
414
|
-
emptyState: /* @__PURE__ */
|
|
421
|
+
emptyState: /* @__PURE__ */ x(P, {
|
|
415
422
|
illustration: "empty-search",
|
|
416
423
|
title: "No candidates match",
|
|
417
424
|
description: "Try a different search term or status filter."
|
|
418
425
|
}),
|
|
419
|
-
rowActions: (e) => /* @__PURE__ */
|
|
426
|
+
rowActions: (e) => /* @__PURE__ */ S("div", {
|
|
420
427
|
className: "flex items-center justify-end gap-1",
|
|
421
|
-
children: [/* @__PURE__ */
|
|
428
|
+
children: [/* @__PURE__ */ x(w, {
|
|
422
429
|
variant: "ghost",
|
|
423
430
|
size: "sm",
|
|
424
431
|
"aria-label": `Edit ${e.firstName} ${e.lastName}`,
|
|
425
432
|
onClick: () => q(e),
|
|
426
|
-
children: /* @__PURE__ */
|
|
427
|
-
}), /* @__PURE__ */
|
|
433
|
+
children: /* @__PURE__ */ x(g, { className: "h-3.5 w-3.5" })
|
|
434
|
+
}), /* @__PURE__ */ x(w, {
|
|
428
435
|
variant: "ghost",
|
|
429
436
|
size: "sm",
|
|
430
437
|
"aria-label": `Delete ${e.firstName} ${e.lastName}`,
|
|
431
438
|
onClick: () => Y(e),
|
|
432
|
-
children: /* @__PURE__ */
|
|
439
|
+
children: /* @__PURE__ */ x(b, { className: "h-3.5 w-3.5 text-status-error-fg" })
|
|
433
440
|
})]
|
|
434
441
|
})
|
|
435
442
|
}),
|
|
436
|
-
|
|
443
|
+
Q.length > j && /* @__PURE__ */ x("div", {
|
|
437
444
|
className: "mt-4",
|
|
438
|
-
children: /* @__PURE__ */
|
|
439
|
-
page:
|
|
440
|
-
pageSize:
|
|
441
|
-
totalItems:
|
|
445
|
+
children: /* @__PURE__ */ x(te, {
|
|
446
|
+
page: A,
|
|
447
|
+
pageSize: j,
|
|
448
|
+
totalItems: Q.length,
|
|
442
449
|
onPageChange: V
|
|
443
450
|
})
|
|
444
451
|
})
|
|
445
452
|
]
|
|
446
453
|
})
|
|
447
454
|
}),
|
|
448
|
-
/* @__PURE__ */
|
|
455
|
+
/* @__PURE__ */ x(a, {
|
|
449
456
|
open: U,
|
|
450
457
|
onOpenChange: G,
|
|
451
458
|
title: "Add Candidate",
|
|
452
459
|
description: "Add someone to your hiring pipeline.",
|
|
453
460
|
fields: R,
|
|
454
461
|
submitLabel: "Add candidate",
|
|
455
|
-
onSubmit:
|
|
462
|
+
onSubmit: ae
|
|
456
463
|
}),
|
|
457
|
-
/* @__PURE__ */
|
|
464
|
+
/* @__PURE__ */ x(a, {
|
|
458
465
|
open: K !== null,
|
|
459
466
|
onOpenChange: (e) => {
|
|
460
467
|
e || q(null);
|
|
@@ -464,9 +471,9 @@ function U() {
|
|
|
464
471
|
fields: R,
|
|
465
472
|
initialValues: K ? z(K) : void 0,
|
|
466
473
|
submitLabel: "Save changes",
|
|
467
|
-
onSubmit:
|
|
474
|
+
onSubmit: oe
|
|
468
475
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
476
|
+
/* @__PURE__ */ x(s, {
|
|
470
477
|
open: J !== null,
|
|
471
478
|
onOpenChange: (e) => {
|
|
472
479
|
e || Y(null);
|
|
@@ -475,91 +482,91 @@ function U() {
|
|
|
475
482
|
description: J ? `Remove ${J.firstName} ${J.lastName} from the pipeline?` : void 0,
|
|
476
483
|
confirmLabel: "Remove",
|
|
477
484
|
destructive: !0,
|
|
478
|
-
onConfirm:
|
|
485
|
+
onConfirm: se
|
|
479
486
|
})
|
|
480
487
|
]
|
|
481
488
|
});
|
|
482
489
|
}
|
|
483
490
|
function W({ candidate: e, onMove: t, onEdit: n, onDelete: r }) {
|
|
484
491
|
let a = `${e.firstName} ${e.lastName}`;
|
|
485
|
-
return /* @__PURE__ */
|
|
492
|
+
return /* @__PURE__ */ S("div", {
|
|
486
493
|
className: "group rounded-[var(--radius-input)] border border-border-subtle bg-bg-surface p-3 shadow-elevation-1 transition-shadow hover:shadow-elevation-2",
|
|
487
494
|
children: [
|
|
488
|
-
/* @__PURE__ */
|
|
495
|
+
/* @__PURE__ */ S("div", {
|
|
489
496
|
className: "flex items-start gap-2.5",
|
|
490
|
-
children: [/* @__PURE__ */
|
|
497
|
+
children: [/* @__PURE__ */ x(V, {
|
|
491
498
|
name: a,
|
|
492
499
|
size: 36
|
|
493
|
-
}), /* @__PURE__ */
|
|
500
|
+
}), /* @__PURE__ */ S("div", {
|
|
494
501
|
className: "min-w-0 flex-1",
|
|
495
|
-
children: [/* @__PURE__ */
|
|
502
|
+
children: [/* @__PURE__ */ x("p", {
|
|
496
503
|
className: "truncate text-sm font-semibold text-text-primary",
|
|
497
504
|
children: a
|
|
498
|
-
}), /* @__PURE__ */
|
|
505
|
+
}), /* @__PURE__ */ x("p", {
|
|
499
506
|
className: "truncate text-xs text-text-secondary",
|
|
500
507
|
children: e.position
|
|
501
508
|
})]
|
|
502
509
|
})]
|
|
503
510
|
}),
|
|
504
|
-
/* @__PURE__ */
|
|
511
|
+
/* @__PURE__ */ S("div", {
|
|
505
512
|
className: "mt-2 flex items-center justify-between gap-2",
|
|
506
|
-
children: [/* @__PURE__ */
|
|
513
|
+
children: [/* @__PURE__ */ x(i, {
|
|
507
514
|
value: e.rating,
|
|
508
515
|
size: 13
|
|
509
|
-
}), /* @__PURE__ */
|
|
516
|
+
}), /* @__PURE__ */ x(C, {
|
|
510
517
|
variant: "outline",
|
|
511
518
|
className: "shrink-0 text-[9px]",
|
|
512
519
|
children: e.source
|
|
513
520
|
})]
|
|
514
521
|
}),
|
|
515
|
-
e.skills.length > 0 && /* @__PURE__ */
|
|
522
|
+
e.skills.length > 0 && /* @__PURE__ */ x("div", {
|
|
516
523
|
className: "mt-2 flex flex-wrap gap-1",
|
|
517
|
-
children: e.skills.slice(0, 3).map((e) => /* @__PURE__ */
|
|
524
|
+
children: e.skills.slice(0, 3).map((e) => /* @__PURE__ */ x(C, {
|
|
518
525
|
variant: "secondary",
|
|
519
526
|
className: "text-[9px]",
|
|
520
527
|
children: e
|
|
521
528
|
}, e))
|
|
522
529
|
}),
|
|
523
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ S("div", {
|
|
524
531
|
className: "mt-2.5 flex items-center justify-between gap-1 border-t border-border-subtle pt-2",
|
|
525
|
-
children: [/* @__PURE__ */
|
|
532
|
+
children: [/* @__PURE__ */ S(E, { children: [/* @__PURE__ */ x(j, {
|
|
526
533
|
asChild: !0,
|
|
527
|
-
children: /* @__PURE__ */
|
|
534
|
+
children: /* @__PURE__ */ S(w, {
|
|
528
535
|
variant: "ghost",
|
|
529
536
|
size: "sm",
|
|
530
537
|
className: "h-7 px-2 text-xs",
|
|
531
|
-
children: [/* @__PURE__ */
|
|
538
|
+
children: [/* @__PURE__ */ x(m, { className: "mr-1 h-3.5 w-3.5" }), "Move"]
|
|
532
539
|
})
|
|
533
|
-
}), /* @__PURE__ */
|
|
540
|
+
}), /* @__PURE__ */ S(D, {
|
|
534
541
|
align: "start",
|
|
535
542
|
children: [
|
|
536
|
-
/* @__PURE__ */
|
|
537
|
-
/* @__PURE__ */
|
|
538
|
-
L.filter((t) => t.key !== e.status).map((n) => /* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ x(k, { children: "Move to stage" }),
|
|
544
|
+
/* @__PURE__ */ x(A, {}),
|
|
545
|
+
L.filter((t) => t.key !== e.status).map((n) => /* @__PURE__ */ S(O, {
|
|
539
546
|
onSelect: () => t(e, n.key),
|
|
540
|
-
children: [/* @__PURE__ */
|
|
547
|
+
children: [/* @__PURE__ */ x("span", {
|
|
541
548
|
"aria-hidden": "true",
|
|
542
549
|
className: "mr-2 inline-block h-2 w-2 rounded-full",
|
|
543
550
|
style: { backgroundColor: n.accent }
|
|
544
551
|
}), n.label]
|
|
545
552
|
}, n.key))
|
|
546
553
|
]
|
|
547
|
-
})] }), /* @__PURE__ */
|
|
554
|
+
})] }), /* @__PURE__ */ S("div", {
|
|
548
555
|
className: "flex items-center gap-0.5",
|
|
549
|
-
children: [/* @__PURE__ */
|
|
556
|
+
children: [/* @__PURE__ */ x(w, {
|
|
550
557
|
variant: "ghost",
|
|
551
558
|
size: "sm",
|
|
552
559
|
className: "h-7 w-7 p-0",
|
|
553
560
|
"aria-label": `Edit ${a}`,
|
|
554
561
|
onClick: n,
|
|
555
|
-
children: /* @__PURE__ */
|
|
556
|
-
}), /* @__PURE__ */
|
|
562
|
+
children: /* @__PURE__ */ x(g, { className: "h-3.5 w-3.5" })
|
|
563
|
+
}), /* @__PURE__ */ x(w, {
|
|
557
564
|
variant: "ghost",
|
|
558
565
|
size: "sm",
|
|
559
566
|
className: "h-7 w-7 p-0",
|
|
560
567
|
"aria-label": `Delete ${a}`,
|
|
561
568
|
onClick: r,
|
|
562
|
-
children: /* @__PURE__ */
|
|
569
|
+
children: /* @__PURE__ */ x(b, { className: "h-3.5 w-3.5 text-status-error-fg" })
|
|
563
570
|
})]
|
|
564
571
|
})]
|
|
565
572
|
})
|