@burdenoff/microfe-crewfoundry 2026.716.1 → 2026.719.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/CrewFoundryRoutes.d.ts.map +1 -1
- package/dist/crewfoundry/CrewFoundryRoutes.js +53 -49
- package/dist/crewfoundry/CrewFoundryRoutes.js.map +1 -1
- package/dist/crewfoundry/components/forms/AttachDocumentDialog.d.ts +16 -0
- package/dist/crewfoundry/components/forms/AttachDocumentDialog.d.ts.map +1 -0
- package/dist/crewfoundry/components/forms/AttachDocumentDialog.js +123 -0
- package/dist/crewfoundry/components/forms/AttachDocumentDialog.js.map +1 -0
- package/dist/crewfoundry/components/viz/StepProgress.js +64 -3
- package/dist/crewfoundry/components/viz/StepProgress.js.map +1 -0
- package/dist/crewfoundry/pages/HiringOnboardingPagePage.d.ts +2 -0
- package/dist/crewfoundry/pages/HiringOnboardingPagePage.d.ts.map +1 -0
- package/dist/crewfoundry/pages/HiringOnboardingPagePage.js +323 -0
- package/dist/crewfoundry/pages/HiringOnboardingPagePage.js.map +1 -0
- package/dist/crewfoundry/pages/HrEmployeeProfilePagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeeProfilePagePage.js +208 -118
- package/dist/crewfoundry/pages/HrEmployeeProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.d.ts +72 -0
- package/dist/crewfoundry/store/crewfoundryStore.d.ts.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js +224 -116
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,64 @@
|
|
|
1
|
-
import "./lib/palette.js";
|
|
2
|
-
import "
|
|
3
|
-
import "react
|
|
1
|
+
import { ACCENT as e } from "./lib/palette.js";
|
|
2
|
+
import { cn as t } from "../../utils/cn.js";
|
|
3
|
+
import { Check as n } from "lucide-react";
|
|
4
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
|
+
//#region src/crewfoundry/components/viz/StepProgress.tsx
|
|
6
|
+
function a({ steps: a, current: o, className: s }) {
|
|
7
|
+
return a.length === 0 ? null : /* @__PURE__ */ r("ol", {
|
|
8
|
+
className: t("flex items-start overflow-x-auto pb-1", s),
|
|
9
|
+
"aria-label": "Progress",
|
|
10
|
+
children: a.map((s, c) => {
|
|
11
|
+
let l = c < o ? "complete" : c === o ? "current" : "upcoming";
|
|
12
|
+
return /* @__PURE__ */ i("li", {
|
|
13
|
+
className: "flex min-w-[5rem] flex-1 flex-col items-center",
|
|
14
|
+
"aria-current": l === "current" ? "step" : void 0,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ i("div", {
|
|
17
|
+
className: "flex w-full items-center",
|
|
18
|
+
children: [
|
|
19
|
+
c > 0 ? /* @__PURE__ */ r("span", {
|
|
20
|
+
"aria-hidden": "true",
|
|
21
|
+
className: "h-0.5 flex-1 rounded-full",
|
|
22
|
+
style: { backgroundColor: c <= o ? e : "var(--color-border-subtle)" }
|
|
23
|
+
}) : /* @__PURE__ */ r("span", {
|
|
24
|
+
className: "flex-1",
|
|
25
|
+
"aria-hidden": "true"
|
|
26
|
+
}),
|
|
27
|
+
/* @__PURE__ */ r("span", {
|
|
28
|
+
className: t("flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors", l === "complete" && "border-transparent text-text-inverse", l === "current" && "bg-bg-surface", l === "upcoming" && "border-border-subtle bg-bg-sunken text-text-muted"),
|
|
29
|
+
style: l === "complete" ? { backgroundColor: e } : l === "current" ? {
|
|
30
|
+
borderColor: e,
|
|
31
|
+
color: e
|
|
32
|
+
} : void 0,
|
|
33
|
+
children: l === "complete" ? /* @__PURE__ */ r(n, {
|
|
34
|
+
"aria-hidden": "true",
|
|
35
|
+
className: "h-4 w-4"
|
|
36
|
+
}) : c + 1
|
|
37
|
+
}),
|
|
38
|
+
c < a.length - 1 ? /* @__PURE__ */ r("span", {
|
|
39
|
+
"aria-hidden": "true",
|
|
40
|
+
className: "h-0.5 flex-1 rounded-full",
|
|
41
|
+
style: { backgroundColor: c < o ? e : "var(--color-border-subtle)" }
|
|
42
|
+
}) : /* @__PURE__ */ r("span", {
|
|
43
|
+
className: "flex-1",
|
|
44
|
+
"aria-hidden": "true"
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ r("span", {
|
|
49
|
+
className: t("mt-2 px-1 text-center text-xs", l === "upcoming" ? "text-text-muted" : "font-medium text-text-primary"),
|
|
50
|
+
children: s.label
|
|
51
|
+
}),
|
|
52
|
+
s.description ? /* @__PURE__ */ r("span", {
|
|
53
|
+
className: "mt-0.5 px-1 text-center text-[11px] text-text-muted",
|
|
54
|
+
children: s.description
|
|
55
|
+
}) : null
|
|
56
|
+
]
|
|
57
|
+
}, `${s.label}-${c}`);
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { a as StepProgress };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=StepProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepProgress.js","names":[],"sources":["../../../../src/crewfoundry/components/viz/StepProgress.tsx"],"sourcesContent":["import { Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { ACCENT } from './lib/palette';\n\nexport interface StepProgressStep {\n label: string;\n description?: string;\n}\n\nexport interface StepProgressProps {\n steps: StepProgressStep[];\n /** Zero-based index of the current (in-progress) step. */\n current: number;\n className?: string;\n}\n\ntype StepState = 'complete' | 'current' | 'upcoming';\n\n/**\n * Horizontal stage tracker (e.g. Offer → Paperwork → IT → Training → Day 1).\n * Completed steps are filled with a check, the current step is highlighted and\n * future steps are muted. Scrolls horizontally on narrow screens.\n */\nexport function StepProgress({ steps, current, className }: StepProgressProps) {\n if (steps.length === 0) {\n return null;\n }\n return (\n <ol className={cn('flex items-start overflow-x-auto pb-1', className)} aria-label=\"Progress\">\n {steps.map((step, i) => {\n const state: StepState = i < current ? 'complete' : i === current ? 'current' : 'upcoming';\n const connectorFilled = i <= current;\n return (\n <li\n key={`${step.label}-${i}`}\n className=\"flex min-w-[5rem] flex-1 flex-col items-center\"\n aria-current={state === 'current' ? 'step' : undefined}\n >\n <div className=\"flex w-full items-center\">\n {i > 0 ? (\n <span\n aria-hidden=\"true\"\n className=\"h-0.5 flex-1 rounded-full\"\n style={{\n backgroundColor: connectorFilled ? ACCENT : 'var(--color-border-subtle)',\n }}\n />\n ) : (\n <span className=\"flex-1\" aria-hidden=\"true\" />\n )}\n <span\n className={cn(\n 'flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors',\n state === 'complete' && 'border-transparent text-text-inverse',\n state === 'current' && 'bg-bg-surface',\n state === 'upcoming' && 'border-border-subtle bg-bg-sunken text-text-muted'\n )}\n style={\n state === 'complete'\n ? { backgroundColor: ACCENT }\n : state === 'current'\n ? { borderColor: ACCENT, color: ACCENT }\n : undefined\n }\n >\n {state === 'complete' ? <Check aria-hidden=\"true\" className=\"h-4 w-4\" /> : i + 1}\n </span>\n {i < steps.length - 1 ? (\n <span\n aria-hidden=\"true\"\n className=\"h-0.5 flex-1 rounded-full\"\n style={{ backgroundColor: i < current ? ACCENT : 'var(--color-border-subtle)' }}\n />\n ) : (\n <span className=\"flex-1\" aria-hidden=\"true\" />\n )}\n </div>\n <span\n className={cn(\n 'mt-2 px-1 text-center text-xs',\n state === 'upcoming' ? 'text-text-muted' : 'font-medium text-text-primary'\n )}\n >\n {step.label}\n </span>\n {step.description ? (\n <span className=\"mt-0.5 px-1 text-center text-[11px] text-text-muted\">\n {step.description}\n </span>\n ) : null}\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":";;;;;AAuBA,SAAgB,EAAa,EAAE,UAAO,YAAS,gBAAgC;AAI7E,QAHI,EAAM,WAAW,IACZ,OAGP,kBAAC,MAAD;EAAI,WAAW,EAAG,yCAAyC,EAAU;EAAE,cAAW;YAC/E,EAAM,KAAK,GAAM,MAAM;GACtB,IAAM,IAAmB,IAAI,IAAU,aAAa,MAAM,IAAU,YAAY;AAEhF,UACE,kBAAC,MAAD;IAEE,WAAU;IACV,gBAAc,MAAU,YAAY,SAAS,KAAA;cAH/C;KAKE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACG,IAAI,IACH,kBAAC,QAAD;QACE,eAAY;QACZ,WAAU;QACV,OAAO,EACL,iBAbY,KAAK,IAakB,IAAS,8BAC7C;QACD,CAAA,GAEF,kBAAC,QAAD;QAAM,WAAU;QAAS,eAAY;QAAS,CAAA;OAEhD,kBAAC,QAAD;QACE,WAAW,EACT,gIACA,MAAU,cAAc,wCACxB,MAAU,aAAa,iBACvB,MAAU,cAAc,oDACzB;QACD,OACE,MAAU,aACN,EAAE,iBAAiB,GAAQ,GAC3B,MAAU,YACR;SAAE,aAAa;SAAQ,OAAO;SAAQ,GACtC,KAAA;kBAGP,MAAU,aAAa,kBAAC,GAAD;SAAO,eAAY;SAAO,WAAU;SAAY,CAAA,GAAG,IAAI;QAC1E,CAAA;OACN,IAAI,EAAM,SAAS,IAClB,kBAAC,QAAD;QACE,eAAY;QACZ,WAAU;QACV,OAAO,EAAE,iBAAiB,IAAI,IAAU,IAAS,8BAA8B;QAC/E,CAAA,GAEF,kBAAC,QAAD;QAAM,WAAU;QAAS,eAAY;QAAS,CAAA;OAE5C;;KACN,kBAAC,QAAD;MACE,WAAW,EACT,iCACA,MAAU,aAAa,oBAAoB,gCAC5C;gBAEA,EAAK;MACD,CAAA;KACN,EAAK,cACJ,kBAAC,QAAD;MAAM,WAAU;gBACb,EAAK;MACD,CAAA,GACL;KACD;MAxDE,GAAG,EAAK,MAAM,GAAG,IAwDnB;IAEP;EACC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiringOnboardingPagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/HiringOnboardingPagePage.tsx"],"names":[],"mappings":"AAyPA,wBAAgB,wBAAwB,gCA4EvC"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
+
import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
|
|
3
|
+
import { ProgressRing as n } from "../components/viz/ProgressRing.js";
|
|
4
|
+
import { StepProgress as r } from "../components/viz/StepProgress.js";
|
|
5
|
+
import { AvatarStack as i } from "../components/viz/AvatarStack.js";
|
|
6
|
+
import "../components/viz/index.js";
|
|
7
|
+
import { FormModal as a, useFormModal as o } from "../components/forms/FormModal.js";
|
|
8
|
+
import { ConfirmDialog as s } from "../components/forms/ConfirmDialog.js";
|
|
9
|
+
import { getText as c } from "../components/forms/formValues.js";
|
|
10
|
+
import { useEffect as l, useState as u } from "react";
|
|
11
|
+
import { Plus as d, Trash2 as f, UserPlus as p } from "lucide-react";
|
|
12
|
+
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
13
|
+
import { Badge as g, Button as _, CardContent as v, CardHeader as y, CardTitle as b, Checkbox as x, GlassCard as S, GradientText as C, IllustratedEmptyState as w, PagePurpose as T, Spinner as E } from "@burdenoff/fe-libs/ui";
|
|
14
|
+
import { useGlobalUi as D } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
15
|
+
//#region src/crewfoundry/pages/HiringOnboardingPagePage.tsx
|
|
16
|
+
var O = [
|
|
17
|
+
{
|
|
18
|
+
id: "offer",
|
|
19
|
+
label: "Offer",
|
|
20
|
+
description: "Offer extended"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "paperwork",
|
|
24
|
+
label: "Paperwork",
|
|
25
|
+
description: "Docs signed"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "it_setup",
|
|
29
|
+
label: "IT Setup",
|
|
30
|
+
description: "Accounts + gear"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "training",
|
|
34
|
+
label: "Training",
|
|
35
|
+
description: "Onboarding path"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "day_one",
|
|
39
|
+
label: "Day 1",
|
|
40
|
+
description: "First day"
|
|
41
|
+
}
|
|
42
|
+
], k = O.map((e) => e.id), A = [
|
|
43
|
+
{
|
|
44
|
+
name: "fullName",
|
|
45
|
+
label: "New hire name",
|
|
46
|
+
type: "text",
|
|
47
|
+
required: !0,
|
|
48
|
+
colSpan: 2
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "position",
|
|
52
|
+
label: "Position",
|
|
53
|
+
type: "text",
|
|
54
|
+
required: !0
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "department",
|
|
58
|
+
label: "Department",
|
|
59
|
+
type: "text"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "startDate",
|
|
63
|
+
label: "Start date",
|
|
64
|
+
type: "date"
|
|
65
|
+
}
|
|
66
|
+
], j = [
|
|
67
|
+
{
|
|
68
|
+
name: "title",
|
|
69
|
+
label: "Task",
|
|
70
|
+
type: "text",
|
|
71
|
+
required: !0,
|
|
72
|
+
colSpan: 2
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "stage",
|
|
76
|
+
label: "Stage",
|
|
77
|
+
type: "select",
|
|
78
|
+
required: !0,
|
|
79
|
+
options: O.map((e) => ({
|
|
80
|
+
label: e.label,
|
|
81
|
+
value: e.id
|
|
82
|
+
}))
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "assigneeName",
|
|
86
|
+
label: "Owner",
|
|
87
|
+
type: "text",
|
|
88
|
+
placeholder: "HR, IT, hiring manager…"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "dueDate",
|
|
92
|
+
label: "Due date",
|
|
93
|
+
type: "date"
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
function M(e) {
|
|
97
|
+
return e === "completed" ? "default" : e === "cancelled" ? "outline" : "secondary";
|
|
98
|
+
}
|
|
99
|
+
function N({ task: e, onToggle: n, onRemove: r }) {
|
|
100
|
+
let { showToast: i } = D(), [a, o] = u(!1), s = async (e) => {
|
|
101
|
+
o(!0);
|
|
102
|
+
try {
|
|
103
|
+
await n(e);
|
|
104
|
+
} catch (e) {
|
|
105
|
+
i(e instanceof Error ? e.message : "Unable to update task", "error");
|
|
106
|
+
} finally {
|
|
107
|
+
o(!1);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return /* @__PURE__ */ h("div", {
|
|
111
|
+
className: "flex items-start gap-3 rounded-input border border-border-subtle bg-bg-surface px-3 py-2",
|
|
112
|
+
children: [
|
|
113
|
+
/* @__PURE__ */ m(x, {
|
|
114
|
+
checked: !!e.completedAt,
|
|
115
|
+
onCheckedChange: (e) => void s(e === !0),
|
|
116
|
+
disabled: a,
|
|
117
|
+
"aria-label": `Mark "${e.title}" complete`,
|
|
118
|
+
className: "mt-0.5"
|
|
119
|
+
}),
|
|
120
|
+
/* @__PURE__ */ h("div", {
|
|
121
|
+
className: "min-w-0 flex-1",
|
|
122
|
+
children: [/* @__PURE__ */ m("p", {
|
|
123
|
+
className: `truncate text-sm ${e.completedAt ? "text-text-muted line-through" : "text-text-primary"}`,
|
|
124
|
+
children: e.title
|
|
125
|
+
}), /* @__PURE__ */ h("p", {
|
|
126
|
+
className: "text-xs text-text-muted",
|
|
127
|
+
children: [
|
|
128
|
+
t(e.stage),
|
|
129
|
+
e.assigneeName ? ` · ${e.assigneeName}` : "",
|
|
130
|
+
e.dueDate ? ` · due ${e.dueDate.slice(0, 10)}` : ""
|
|
131
|
+
]
|
|
132
|
+
})]
|
|
133
|
+
}),
|
|
134
|
+
/* @__PURE__ */ m("button", {
|
|
135
|
+
type: "button",
|
|
136
|
+
"aria-label": `Remove task "${e.title}"`,
|
|
137
|
+
className: "shrink-0 text-text-muted hover:text-status-error-fg",
|
|
138
|
+
onClick: () => void r(),
|
|
139
|
+
children: /* @__PURE__ */ m(f, { className: "h-3.5 w-3.5" })
|
|
140
|
+
})
|
|
141
|
+
]
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function P({ onboarding: o }) {
|
|
145
|
+
let { showToast: l } = D(), p = e((e) => e.toggleOnboardingTask), x = e((e) => e.removeOnboardingTask), C = e((e) => e.createOnboardingTask), w = e((e) => e.removeOnboarding), [T, E] = u(!1), [A, P] = u(!1), F = Math.max(0, k.indexOf(o.currentStage)), I = k.map((e) => ({
|
|
146
|
+
stage: e,
|
|
147
|
+
tasks: o.tasks.filter((t) => t.stage === e).sort((e, t) => e.sortOrder - t.sortOrder)
|
|
148
|
+
})).filter((e) => e.tasks.length > 0);
|
|
149
|
+
return /* @__PURE__ */ h(S, {
|
|
150
|
+
treatment: "glass",
|
|
151
|
+
className: "border-border-seam",
|
|
152
|
+
children: [
|
|
153
|
+
/* @__PURE__ */ h(y, {
|
|
154
|
+
className: "flex flex-row flex-wrap items-start justify-between gap-3",
|
|
155
|
+
children: [/* @__PURE__ */ h("div", {
|
|
156
|
+
className: "flex items-center gap-3",
|
|
157
|
+
children: [/* @__PURE__ */ m(i, {
|
|
158
|
+
people: [{ name: o.fullName }],
|
|
159
|
+
max: 1,
|
|
160
|
+
size: 40
|
|
161
|
+
}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m(b, {
|
|
162
|
+
className: "text-base",
|
|
163
|
+
children: o.fullName
|
|
164
|
+
}), /* @__PURE__ */ h("p", {
|
|
165
|
+
className: "text-sm text-text-secondary",
|
|
166
|
+
children: [o.position, o.department ? ` · ${o.department}` : ""]
|
|
167
|
+
})] })]
|
|
168
|
+
}), /* @__PURE__ */ h("div", {
|
|
169
|
+
className: "flex items-center gap-3",
|
|
170
|
+
children: [/* @__PURE__ */ m(g, {
|
|
171
|
+
variant: M(o.status),
|
|
172
|
+
children: t(o.status)
|
|
173
|
+
}), /* @__PURE__ */ m("button", {
|
|
174
|
+
type: "button",
|
|
175
|
+
"aria-label": `Cancel onboarding for ${o.fullName}`,
|
|
176
|
+
className: "text-text-muted hover:text-status-error-fg",
|
|
177
|
+
onClick: () => P(!0),
|
|
178
|
+
children: /* @__PURE__ */ m(f, { className: "h-4 w-4" })
|
|
179
|
+
})]
|
|
180
|
+
})]
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ h(v, {
|
|
183
|
+
className: "space-y-5 pt-0",
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ h("div", {
|
|
186
|
+
className: "flex flex-col gap-4 sm:flex-row sm:items-center",
|
|
187
|
+
children: [/* @__PURE__ */ m(n, {
|
|
188
|
+
value: o.progressPercent,
|
|
189
|
+
max: 100,
|
|
190
|
+
size: 64,
|
|
191
|
+
label: `${Math.round(o.progressPercent)}%`
|
|
192
|
+
}), /* @__PURE__ */ m("div", {
|
|
193
|
+
className: "flex-1",
|
|
194
|
+
children: /* @__PURE__ */ m(r, {
|
|
195
|
+
steps: O,
|
|
196
|
+
current: F
|
|
197
|
+
})
|
|
198
|
+
})]
|
|
199
|
+
}),
|
|
200
|
+
/* @__PURE__ */ m("div", {
|
|
201
|
+
className: "space-y-3",
|
|
202
|
+
children: I.length > 0 ? I.map((e) => /* @__PURE__ */ h("div", {
|
|
203
|
+
className: "space-y-2",
|
|
204
|
+
children: [/* @__PURE__ */ m("p", {
|
|
205
|
+
className: "text-xs font-medium uppercase tracking-wide text-text-muted",
|
|
206
|
+
children: t(e.stage)
|
|
207
|
+
}), /* @__PURE__ */ m("div", {
|
|
208
|
+
className: "space-y-1.5",
|
|
209
|
+
children: e.tasks.map((e) => /* @__PURE__ */ m(N, {
|
|
210
|
+
task: e,
|
|
211
|
+
onToggle: (t) => p(e.id, t),
|
|
212
|
+
onRemove: () => x(e.id)
|
|
213
|
+
}, e.id))
|
|
214
|
+
})]
|
|
215
|
+
}, e.stage)) : /* @__PURE__ */ m("p", {
|
|
216
|
+
className: "text-sm text-text-muted",
|
|
217
|
+
children: "No checklist items yet. Add the first one below."
|
|
218
|
+
})
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ h(_, {
|
|
221
|
+
variant: "outline",
|
|
222
|
+
size: "sm",
|
|
223
|
+
onClick: () => E(!0),
|
|
224
|
+
children: [/* @__PURE__ */ m(d, { className: "mr-1 h-3.5 w-3.5" }), "Add task"]
|
|
225
|
+
})
|
|
226
|
+
]
|
|
227
|
+
}),
|
|
228
|
+
/* @__PURE__ */ m(a, {
|
|
229
|
+
open: T,
|
|
230
|
+
onOpenChange: E,
|
|
231
|
+
title: `Add a task for ${o.fullName}`,
|
|
232
|
+
fields: j,
|
|
233
|
+
submitLabel: "Add task",
|
|
234
|
+
onSubmit: async (e) => {
|
|
235
|
+
await C({
|
|
236
|
+
onboardingId: o.id,
|
|
237
|
+
stage: c(e, "stage"),
|
|
238
|
+
title: c(e, "title"),
|
|
239
|
+
assigneeName: c(e, "assigneeName") || void 0,
|
|
240
|
+
dueDate: c(e, "dueDate") || void 0
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}),
|
|
244
|
+
/* @__PURE__ */ m(s, {
|
|
245
|
+
open: A,
|
|
246
|
+
onOpenChange: P,
|
|
247
|
+
title: "Cancel onboarding?",
|
|
248
|
+
description: `This removes the onboarding tracker for ${o.fullName}. This cannot be undone.`,
|
|
249
|
+
confirmLabel: "Cancel onboarding",
|
|
250
|
+
destructive: !0,
|
|
251
|
+
onConfirm: async () => {
|
|
252
|
+
try {
|
|
253
|
+
await w(o.id);
|
|
254
|
+
} catch (e) {
|
|
255
|
+
throw l(e instanceof Error ? e.message : "Unable to cancel onboarding", "error"), e;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
})
|
|
259
|
+
]
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
function F() {
|
|
263
|
+
let t = e((e) => e.onboardings), n = e((e) => e.onboardingsLoaded), r = e((e) => e.fetchOnboardings), i = e((e) => e.createOnboarding), { showToast: s } = D(), u = o();
|
|
264
|
+
return l(() => {
|
|
265
|
+
n || r().catch((e) => {
|
|
266
|
+
s(e instanceof Error ? e.message : "Unable to load onboarding", "error");
|
|
267
|
+
});
|
|
268
|
+
}, [
|
|
269
|
+
n,
|
|
270
|
+
r,
|
|
271
|
+
s
|
|
272
|
+
]), /* @__PURE__ */ h("div", {
|
|
273
|
+
className: "space-y-6 p-6",
|
|
274
|
+
children: [
|
|
275
|
+
/* @__PURE__ */ h("div", {
|
|
276
|
+
className: "flex flex-wrap items-center justify-between gap-3",
|
|
277
|
+
children: [/* @__PURE__ */ m("h1", {
|
|
278
|
+
className: "text-2xl font-semibold",
|
|
279
|
+
children: /* @__PURE__ */ m(C, { children: "Onboarding" })
|
|
280
|
+
}), /* @__PURE__ */ h(_, {
|
|
281
|
+
onClick: () => u.openModal(),
|
|
282
|
+
children: [/* @__PURE__ */ m(p, { className: "mr-1.5 h-4 w-4" }), "Start onboarding"]
|
|
283
|
+
})]
|
|
284
|
+
}),
|
|
285
|
+
/* @__PURE__ */ m(T, { children: "A requisition-to-hire tracker for every new hire in flight — Offer → Paperwork → IT Setup → Training → Day 1 — with owned checklist items so nothing falls through between HR, IT, the hiring manager, and L&D." }),
|
|
286
|
+
n ? t.length === 0 ? /* @__PURE__ */ m(w, {
|
|
287
|
+
illustration: "empty-data",
|
|
288
|
+
title: "No onboarding in progress",
|
|
289
|
+
description: "Start an onboarding tracker once a candidate accepts an offer.",
|
|
290
|
+
action: /* @__PURE__ */ h(_, {
|
|
291
|
+
onClick: () => u.openModal(),
|
|
292
|
+
children: [/* @__PURE__ */ m(p, { className: "mr-1.5 h-4 w-4" }), "Start onboarding"]
|
|
293
|
+
})
|
|
294
|
+
}) : /* @__PURE__ */ m("div", {
|
|
295
|
+
className: "grid gap-4 xl:grid-cols-2",
|
|
296
|
+
children: t.map((e) => /* @__PURE__ */ m(P, { onboarding: e }, e.id))
|
|
297
|
+
}) : /* @__PURE__ */ m("div", {
|
|
298
|
+
className: "flex min-h-[40vh] items-center justify-center",
|
|
299
|
+
children: /* @__PURE__ */ m(E, { size: "lg" })
|
|
300
|
+
}),
|
|
301
|
+
/* @__PURE__ */ m(a, {
|
|
302
|
+
open: u.open,
|
|
303
|
+
onOpenChange: u.onOpenChange,
|
|
304
|
+
title: "Start onboarding",
|
|
305
|
+
description: "Creates a per-hire tracker with the standard five-stage checklist.",
|
|
306
|
+
fields: A,
|
|
307
|
+
submitLabel: "Start onboarding",
|
|
308
|
+
onSubmit: async (e) => {
|
|
309
|
+
await i({
|
|
310
|
+
fullName: c(e, "fullName"),
|
|
311
|
+
position: c(e, "position"),
|
|
312
|
+
department: c(e, "department") || void 0,
|
|
313
|
+
startDate: c(e, "startDate") || void 0
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
})
|
|
317
|
+
]
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
//#endregion
|
|
321
|
+
export { F as HiringOnboardingPagePage };
|
|
322
|
+
|
|
323
|
+
//# sourceMappingURL=HiringOnboardingPagePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HiringOnboardingPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/HiringOnboardingPagePage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n Badge,\n Button,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n Spinner,\n Checkbox,\n} from '@burdenoff/fe-libs/ui';\nimport { useGlobalUi } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { Plus, Trash2, UserPlus } from 'lucide-react';\nimport {\n useCrewFoundryStore,\n type CrewOnboarding,\n type CrewOnboardingTask,\n type OnboardingStage,\n} from '../store/crewfoundryStore';\nimport { FormModal, useFormModal, type FieldConfig } from '../components/forms/FormModal';\nimport { ConfirmDialog } from '../components/forms/ConfirmDialog';\nimport { getText } from '../components/forms/formValues';\nimport { formatEnumLabel } from '../utils/formatEnumLabel';\nimport { AvatarStack, ProgressRing, StepProgress } from '../components/viz';\n\nconst STAGES: { id: OnboardingStage; label: string; description: string }[] = [\n { id: 'offer', label: 'Offer', description: 'Offer extended' },\n { id: 'paperwork', label: 'Paperwork', description: 'Docs signed' },\n { id: 'it_setup', label: 'IT Setup', description: 'Accounts + gear' },\n { id: 'training', label: 'Training', description: 'Onboarding path' },\n { id: 'day_one', label: 'Day 1', description: 'First day' },\n];\n\nconst STAGE_ORDER: OnboardingStage[] = STAGES.map((s) => s.id);\n\nconst CREATE_ONBOARDING_FIELDS: FieldConfig[] = [\n { name: 'fullName', label: 'New hire name', type: 'text', required: true, colSpan: 2 },\n { name: 'position', label: 'Position', type: 'text', required: true },\n { name: 'department', label: 'Department', type: 'text' },\n { name: 'startDate', label: 'Start date', type: 'date' },\n];\n\nconst CREATE_TASK_FIELDS: FieldConfig[] = [\n { name: 'title', label: 'Task', type: 'text', required: true, colSpan: 2 },\n {\n name: 'stage',\n label: 'Stage',\n type: 'select',\n required: true,\n options: STAGES.map((s) => ({ label: s.label, value: s.id })),\n },\n { name: 'assigneeName', label: 'Owner', type: 'text', placeholder: 'HR, IT, hiring manager…' },\n { name: 'dueDate', label: 'Due date', type: 'date' },\n];\n\nfunction statusBadgeVariant(status: CrewOnboarding['status']): 'default' | 'secondary' | 'outline' {\n if (status === 'completed') return 'default';\n if (status === 'cancelled') return 'outline';\n return 'secondary';\n}\n\nfunction OnboardingTaskRow({\n task,\n onToggle,\n onRemove,\n}: {\n task: CrewOnboardingTask;\n onToggle: (completed: boolean) => Promise<void>;\n onRemove: () => Promise<void>;\n}) {\n const { showToast } = useGlobalUi();\n const [pending, setPending] = useState(false);\n\n const handleToggle = async (checked: boolean) => {\n setPending(true);\n try {\n await onToggle(checked);\n } catch (error) {\n showToast(error instanceof Error ? error.message : 'Unable to update task', 'error');\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"flex items-start gap-3 rounded-input border border-border-subtle bg-bg-surface px-3 py-2\">\n <Checkbox\n checked={Boolean(task.completedAt)}\n onCheckedChange={(checked) => void handleToggle(checked === true)}\n disabled={pending}\n aria-label={`Mark \"${task.title}\" complete`}\n className=\"mt-0.5\"\n />\n <div className=\"min-w-0 flex-1\">\n <p\n className={`truncate text-sm ${task.completedAt ? 'text-text-muted line-through' : 'text-text-primary'}`}\n >\n {task.title}\n </p>\n <p className=\"text-xs text-text-muted\">\n {formatEnumLabel(task.stage)}\n {task.assigneeName ? ` · ${task.assigneeName}` : ''}\n {task.dueDate ? ` · due ${task.dueDate.slice(0, 10)}` : ''}\n </p>\n </div>\n <button\n type=\"button\"\n aria-label={`Remove task \"${task.title}\"`}\n className=\"shrink-0 text-text-muted hover:text-status-error-fg\"\n onClick={() => void onRemove()}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n );\n}\n\nfunction OnboardingCard({ onboarding }: { onboarding: CrewOnboarding }) {\n const { showToast } = useGlobalUi();\n const toggleOnboardingTask = useCrewFoundryStore((state) => state.toggleOnboardingTask);\n const removeOnboardingTask = useCrewFoundryStore((state) => state.removeOnboardingTask);\n const createOnboardingTask = useCrewFoundryStore((state) => state.createOnboardingTask);\n const removeOnboarding = useCrewFoundryStore((state) => state.removeOnboarding);\n const [taskModalOpen, setTaskModalOpen] = useState(false);\n const [confirmRemoveOpen, setConfirmRemoveOpen] = useState(false);\n\n const currentIndex = Math.max(0, STAGE_ORDER.indexOf(onboarding.currentStage));\n const tasksByStage = STAGE_ORDER.map((stage) => ({\n stage,\n tasks: onboarding.tasks\n .filter((task) => task.stage === stage)\n .sort((a, b) => a.sortOrder - b.sortOrder),\n })).filter((group) => group.tasks.length > 0);\n\n return (\n <GlassCard treatment=\"glass\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row flex-wrap items-start justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <AvatarStack people={[{ name: onboarding.fullName }]} max={1} size={40} />\n <div>\n <CardTitle className=\"text-base\">{onboarding.fullName}</CardTitle>\n <p className=\"text-sm text-text-secondary\">\n {onboarding.position}\n {onboarding.department ? ` · ${onboarding.department}` : ''}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n <Badge variant={statusBadgeVariant(onboarding.status)}>\n {formatEnumLabel(onboarding.status)}\n </Badge>\n <button\n type=\"button\"\n aria-label={`Cancel onboarding for ${onboarding.fullName}`}\n className=\"text-text-muted hover:text-status-error-fg\"\n onClick={() => setConfirmRemoveOpen(true)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-5 pt-0\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center\">\n <ProgressRing\n value={onboarding.progressPercent}\n max={100}\n size={64}\n label={`${Math.round(onboarding.progressPercent)}%`}\n />\n <div className=\"flex-1\">\n <StepProgress steps={STAGES} current={currentIndex} />\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {tasksByStage.length > 0 ? (\n tasksByStage.map((group) => (\n <div key={group.stage} className=\"space-y-2\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-muted\">\n {formatEnumLabel(group.stage)}\n </p>\n <div className=\"space-y-1.5\">\n {group.tasks.map((task) => (\n <OnboardingTaskRow\n key={task.id}\n task={task}\n onToggle={(completed) => toggleOnboardingTask(task.id, completed)}\n onRemove={() => removeOnboardingTask(task.id)}\n />\n ))}\n </div>\n </div>\n ))\n ) : (\n <p className=\"text-sm text-text-muted\">\n No checklist items yet. Add the first one below.\n </p>\n )}\n </div>\n\n <Button variant=\"outline\" size=\"sm\" onClick={() => setTaskModalOpen(true)}>\n <Plus className=\"mr-1 h-3.5 w-3.5\" />\n Add task\n </Button>\n </CardContent>\n\n <FormModal\n open={taskModalOpen}\n onOpenChange={setTaskModalOpen}\n title={`Add a task for ${onboarding.fullName}`}\n fields={CREATE_TASK_FIELDS}\n submitLabel=\"Add task\"\n onSubmit={async (values) => {\n await createOnboardingTask({\n onboardingId: onboarding.id,\n stage: getText(values, 'stage') as OnboardingStage,\n title: getText(values, 'title'),\n assigneeName: getText(values, 'assigneeName') || undefined,\n dueDate: getText(values, 'dueDate') || undefined,\n });\n }}\n />\n\n <ConfirmDialog\n open={confirmRemoveOpen}\n onOpenChange={setConfirmRemoveOpen}\n title=\"Cancel onboarding?\"\n description={`This removes the onboarding tracker for ${onboarding.fullName}. This cannot be undone.`}\n confirmLabel=\"Cancel onboarding\"\n destructive\n onConfirm={async () => {\n try {\n await removeOnboarding(onboarding.id);\n } catch (error) {\n showToast(\n error instanceof Error ? error.message : 'Unable to cancel onboarding',\n 'error'\n );\n throw error;\n }\n }}\n />\n </GlassCard>\n );\n}\n\nexport function HiringOnboardingPagePage() {\n const onboardings = useCrewFoundryStore((state) => state.onboardings);\n const onboardingsLoaded = useCrewFoundryStore((state) => state.onboardingsLoaded);\n const fetchOnboardings = useCrewFoundryStore((state) => state.fetchOnboardings);\n const createOnboarding = useCrewFoundryStore((state) => state.createOnboarding);\n const { showToast } = useGlobalUi();\n const createModal = useFormModal();\n\n useEffect(() => {\n if (!onboardingsLoaded) {\n fetchOnboardings().catch((error: unknown) => {\n showToast(error instanceof Error ? error.message : 'Unable to load onboarding', 'error');\n });\n }\n }, [onboardingsLoaded, fetchOnboardings, showToast]);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Onboarding</GradientText>\n </h1>\n <Button onClick={() => createModal.openModal()}>\n <UserPlus className=\"mr-1.5 h-4 w-4\" />\n Start onboarding\n </Button>\n </div>\n\n <PagePurpose>\n A requisition-to-hire tracker for every new hire in flight — Offer → Paperwork → IT Setup →\n Training → Day 1 — with owned checklist items so nothing falls through between HR, IT, the\n hiring manager, and L&D.\n </PagePurpose>\n\n {!onboardingsLoaded ? (\n <div className=\"flex min-h-[40vh] items-center justify-center\">\n <Spinner size=\"lg\" />\n </div>\n ) : onboardings.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No onboarding in progress\"\n description=\"Start an onboarding tracker once a candidate accepts an offer.\"\n action={\n <Button onClick={() => createModal.openModal()}>\n <UserPlus className=\"mr-1.5 h-4 w-4\" />\n Start onboarding\n </Button>\n }\n />\n ) : (\n <div className=\"grid gap-4 xl:grid-cols-2\">\n {onboardings.map((onboarding) => (\n <OnboardingCard key={onboarding.id} onboarding={onboarding} />\n ))}\n </div>\n )}\n\n <FormModal\n open={createModal.open}\n onOpenChange={createModal.onOpenChange}\n title=\"Start onboarding\"\n description=\"Creates a per-hire tracker with the standard five-stage checklist.\"\n fields={CREATE_ONBOARDING_FIELDS}\n submitLabel=\"Start onboarding\"\n onSubmit={async (values) => {\n await createOnboarding({\n fullName: getText(values, 'fullName'),\n position: getText(values, 'position'),\n department: getText(values, 'department') || undefined,\n startDate: getText(values, 'startDate') || undefined,\n });\n }}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HrEmployeeProfilePagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/HrEmployeeProfilePagePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HrEmployeeProfilePagePage.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/pages/HrEmployeeProfilePagePage.tsx"],"names":[],"mappings":"AA+MA,wBAAgB,yBAAyB,gCAqVxC"}
|