@burdenoff/microfe-crewfoundry 2026.1107.1 → 2026.1107.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardExecutiveDashboardPage.js","names":[],"sources":["../../../src/crewfoundry/pages/DashboardExecutiveDashboardPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n ResponsiveTable,\n type ResponsiveTableColumn,\n Separator,\n Spinner,\n} from '@burdenoff/fe-libs/ui';\nimport { Building2, Percent, RefreshCw, Target, UserPlus, Users } from 'lucide-react';\nimport { type ReactNode, useCallback, useEffect, useMemo } from 'react';\nimport {\n useCrewFoundryStore,\n type CrewAttritionRisk,\n type CrewAttritionRiskLevel,\n type CrewCostProjectionRow,\n type CrewExecutiveDashboard,\n type CrewHeadcountGapRow,\n type CrewSkillsGapRow,\n type Department,\n} from '../store/crewfoundryStore';\n\nconst MAX_SKILL_SHORTAGE_ROWS = 8;\n\nconst RISK_BADGE_VARIANT: Record<CrewAttritionRiskLevel, 'destructive' | 'warning' | 'secondary'> =\n {\n HIGH: 'destructive',\n MEDIUM: 'warning',\n LOW: 'secondary',\n };\n\nfunction formatMoney(value: number): string {\n if (Math.abs(value) >= 1_000_000) return `$${(value / 1_000_000).toFixed(1)}M`;\n if (Math.abs(value) >= 1_000) return `$${(value / 1_000).toFixed(0)}K`;\n return `$${Math.round(value)}`;\n}\n\nfunction formatGeneratedAt(iso: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return '';\n return date.toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' });\n}\n\nconst attritionColumns: ResponsiveTableColumn<CrewAttritionRisk>[] = [\n {\n key: 'employee',\n header: 'Employee',\n priority: 'primary',\n cell: (risk) => (\n <div>\n <p className=\"font-medium\">{risk.employeeName}</p>\n <p className=\"text-xs text-text-secondary\">{risk.department}</p>\n </div>\n ),\n },\n {\n key: 'level',\n header: 'Risk',\n priority: 'primary',\n cell: (risk) => (\n <Badge variant={RISK_BADGE_VARIANT[risk.riskLevel]}>\n {risk.riskLevel.charAt(0)}\n {risk.riskLevel.slice(1).toLowerCase()} · {risk.riskScore.toFixed(2)}\n </Badge>\n ),\n },\n {\n key: 'drivers',\n header: 'Drivers',\n priority: 'secondary',\n cell: (risk) => (\n <span className=\"text-sm text-text-secondary\">\n {risk.drivers.length > 0 ? risk.drivers.join(', ') : 'No risk signals'}\n </span>\n ),\n },\n];\n\nconst headcountColumns: ResponsiveTableColumn<CrewHeadcountGapRow>[] = [\n {\n key: 'department',\n header: 'Department',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.department}</span>,\n },\n {\n key: 'current',\n header: 'Active',\n priority: 'secondary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.current}</span>,\n },\n {\n key: 'open',\n header: 'Open roles',\n priority: 'primary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.openPostings}</span>,\n },\n {\n key: 'projected',\n header: 'Projected',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.projectedHeadcount}</span>\n ),\n },\n];\n\nconst skillShortageColumns: ResponsiveTableColumn<CrewSkillsGapRow>[] = [\n {\n key: 'skill',\n header: 'Skill',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.skill}</span>,\n },\n {\n key: 'supply',\n header: 'People',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.employeesWithSkill}</span>\n ),\n },\n {\n key: 'demand',\n header: 'Open roles',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.openJobsRequiringSkill}</span>\n ),\n },\n {\n key: 'shortage',\n header: 'Shortage',\n priority: 'primary',\n cell: (row) => (\n <span className=\"font-semibold tabular-nums text-status-warning-text md:block md:text-right\">\n {row.shortage}\n </span>\n ),\n },\n];\n\nconst costColumns: ResponsiveTableColumn<CrewCostProjectionRow>[] = [\n {\n key: 'department',\n header: 'Department',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.department}</span>,\n },\n {\n key: 'headcount',\n header: 'Active',\n priority: 'secondary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.headcount}</span>,\n },\n {\n key: 'monthly',\n header: 'Monthly',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{formatMoney(row.monthly)}</span>\n ),\n },\n {\n key: 'annual',\n header: 'Annual',\n priority: 'primary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{formatMoney(row.annual)}</span>\n ),\n },\n];\n\nconst departmentColumns: ResponsiveTableColumn<Department>[] = [\n {\n key: 'name',\n header: 'Department',\n priority: 'primary',\n cell: (dept) => <span className=\"font-medium\">{dept.name}</span>,\n },\n {\n key: 'head',\n header: 'Head',\n priority: 'secondary',\n cell: (dept) => <span className=\"text-text-secondary\">{dept.headName}</span>,\n },\n {\n key: 'headcount',\n header: 'Headcount',\n priority: 'secondary',\n cell: (dept) => <span className=\"md:block md:text-right\">{dept.employeeCount}</span>,\n },\n {\n key: 'budget',\n header: 'Budget',\n priority: 'secondary',\n cell: (dept) => <span className=\"md:block md:text-right\">{formatMoney(dept.budget)}</span>,\n },\n {\n key: 'costPerEmployee',\n header: 'Cost/Employee',\n priority: 'primary',\n cell: (dept) => {\n const costPerEmp = dept.employeeCount > 0 ? Math.round(dept.budget / dept.employeeCount) : 0;\n return <span className=\"md:block md:text-right\">{formatMoney(costPerEmp)}</span>;\n },\n },\n];\n\ninterface KpiTileProps {\n label: string;\n value: ReactNode;\n caption: string;\n icon?: ReactNode;\n testId?: string;\n}\n\n/** Metric tile whose caption always renders (StatCard hides it without a delta). */\nfunction KpiTile({ label, value, caption, icon, testId }: KpiTileProps) {\n return (\n <GlassCard treatment=\"metric\" className=\"border-border-seam\" data-testid={testId}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">{label}</CardTitle>\n {icon}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{value}</div>\n <p className=\"text-xs text-text-secondary\">{caption}</p>\n </CardContent>\n </GlassCard>\n );\n}\n\nfunction WorkforceKpis({\n analytics,\n budget,\n retention,\n}: {\n analytics: CrewExecutiveDashboard;\n budget: { spent: number; total: number };\n retention: { retained: number; total: number };\n}) {\n const annualRunRate = analytics.costProjection.reduce((sum, row) => sum + row.annual, 0);\n const openRoles = analytics.headcountGap.reduce((sum, row) => sum + row.openPostings, 0);\n const budgetUtilization = budget.total > 0 ? Math.round((budget.spent / budget.total) * 100) : 0;\n // Retention counts everyone still employed (on leave and inactive\n // included); only terminated people have left.\n const retentionRate =\n retention.total > 0 ? `${Math.round((retention.retained / retention.total) * 100)}%` : '—';\n const iconClass = 'h-4 w-4 text-text-secondary';\n\n return (\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <KpiTile\n label=\"Active headcount\"\n value={analytics.activeHeadcount}\n caption={`${analytics.totalHeadcount} people on record`}\n icon={<Users className={iconClass} />}\n testId=\"kpi-active-headcount\"\n />\n <KpiTile\n label=\"Hires and exits (90 days)\"\n value={`${analytics.newHiresLast90Days} / ${analytics.exitsLast90Days}`}\n caption={`${analytics.newHiresLast90Days} joined, ${analytics.exitsLast90Days} left`}\n icon={<UserPlus className={iconClass} />}\n />\n <KpiTile\n label=\"Average tenure\"\n value={`${analytics.averageTenureMonths.toFixed(1)} mo`}\n caption={`Average performance ${analytics.averagePerformanceScore.toFixed(2)} of 5`}\n icon={<Target className={iconClass} />}\n />\n <KpiTile\n label=\"Retention rate\"\n value={retentionRate}\n caption={`${retention.total - retention.retained} of ${retention.total} people on record have left`}\n icon={<Target className={iconClass} />}\n />\n <KpiTile\n label=\"Payroll run-rate\"\n value={formatMoney(annualRunRate)}\n caption={`Annual salary of active employees; ${openRoles} open role${openRoles === 1 ? '' : 's'} not included`}\n icon={<Building2 className={iconClass} />}\n testId=\"kpi-payroll-run-rate\"\n />\n <KpiTile\n label=\"Budget utilization\"\n value={`${budgetUtilization}%`}\n caption={`${formatMoney(budget.spent)} of ${formatMoney(budget.total)} project budget`}\n icon={<Percent className={iconClass} />}\n />\n </div>\n );\n}\n\nconst RISK_BANDS = [\n { key: 'high', label: 'High', dot: 'bg-status-error-text' },\n { key: 'medium', label: 'Medium', dot: 'bg-status-warning-text' },\n { key: 'low', label: 'Low', dot: 'bg-status-success-text' },\n] as const;\n\nfunction AttritionRiskCard({ risk }: { risk: CrewExecutiveDashboard['attritionRisk'] }) {\n const counts = { high: risk.highCount, medium: risk.mediumCount, low: risk.lowCount };\n return (\n <Card>\n <CardHeader>\n <CardTitle>Attrition risk</CardTitle>\n <CardDescription>\n Heuristic risk bands from performance, tenure, contract type and recent leave. A signal to\n start a conversation, not a prediction.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid gap-3 sm:grid-cols-3\">\n {RISK_BANDS.map((band) => (\n <div\n key={band.key}\n className=\"flex items-center justify-between rounded border p-3\"\n data-testid={`attrition-${band.key}`}\n >\n <div className=\"flex items-center gap-3\">\n <div className={`h-3 w-3 rounded-full ${band.dot}`} />\n <p className=\"text-sm font-medium\">{band.label} risk</p>\n </div>\n <span className=\"text-lg font-bold tabular-nums\">{counts[band.key]}</span>\n </div>\n ))}\n </div>\n {risk.totalAssessed === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No active employees to assess\"\n description=\"Add employees to see where retention attention is needed.\"\n />\n ) : (\n <ResponsiveTable\n columns={attritionColumns}\n data={risk.topRisks}\n rowKey={(row) => row.employeeId}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\ninterface TableCardProps<T> {\n title: string;\n description: string;\n columns: ResponsiveTableColumn<T>[];\n rows: T[];\n rowKey: (row: T) => string;\n emptyTitle: string;\n emptyDescription: string;\n}\n\nfunction TableCard<T>({\n title,\n description,\n columns,\n rows,\n rowKey,\n emptyTitle,\n emptyDescription,\n}: TableCardProps<T>) {\n return (\n <Card>\n <CardHeader>\n <CardTitle>{title}</CardTitle>\n <CardDescription>{description}</CardDescription>\n </CardHeader>\n <CardContent>\n {rows.length > 0 ? (\n <ResponsiveTable columns={columns} data={rows} rowKey={rowKey} />\n ) : (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={emptyTitle}\n description={emptyDescription}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\nfunction WorkforceAnalyticsSections({\n analytics,\n budget,\n retention,\n}: {\n analytics: CrewExecutiveDashboard;\n budget: { spent: number; total: number };\n retention: { retained: number; total: number };\n}) {\n const skillShortages = analytics.skillsGap\n .filter((row) => row.shortage > 0)\n .slice(0, MAX_SKILL_SHORTAGE_ROWS);\n return (\n <>\n <WorkforceKpis analytics={analytics} budget={budget} retention={retention} />\n <AttritionRiskCard risk={analytics.attritionRisk} />\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <TableCard\n title=\"Headcount plan\"\n description=\"Active people per department plus open (active or paused) roles.\"\n columns={headcountColumns}\n rows={analytics.headcountGap}\n rowKey={(row) => row.department}\n emptyTitle=\"No headcount yet\"\n emptyDescription=\"Departments appear here once they have active people or open roles.\"\n />\n <TableCard\n title=\"Skills shortages\"\n description=\"Skills open roles ask for that more roles need than people have.\"\n columns={skillShortageColumns}\n rows={skillShortages}\n rowKey={(row) => row.skill}\n emptyTitle=\"No skills shortages\"\n emptyDescription=\"Every skill listed on an open role is covered by at least as many active employees.\"\n />\n </div>\n <TableCard\n title=\"Payroll run-rate by department\"\n description=\"Annualised salary of active employees\"\n columns={costColumns}\n rows={analytics.costProjection}\n rowKey={(row) => row.department}\n emptyTitle=\"No salaried employees yet\"\n emptyDescription=\"Record salaries on active employees to see the run-rate.\"\n />\n </>\n );\n}\n\nfunction DepartmentBudgetCard({ departments }: { departments: Department[] }) {\n const totalDeptBudget = departments.reduce((sum, d) => sum + d.budget, 0);\n const totalHeadcount = departments.reduce((sum, d) => sum + d.employeeCount, 0);\n const avgCostPerEmployee = totalHeadcount > 0 ? totalDeptBudget / totalHeadcount : 0;\n return (\n <Card>\n <CardHeader>\n <CardTitle>Department Budget Status</CardTitle>\n <CardDescription>Annual budget allocation and headcount</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveTable\n columns={departmentColumns}\n data={departments}\n rowKey={(dept) => dept.id}\n />\n <Separator className=\"my-3\" />\n <div className=\"flex flex-wrap items-center justify-between gap-2 text-sm font-bold\">\n <span>Total</span>\n <span>{totalHeadcount} employees</span>\n <span>{formatMoney(totalDeptBudget)} budget</span>\n <span>{formatMoney(avgCostPerEmployee)} / employee</span>\n </div>\n </CardContent>\n </Card>\n );\n}\n\n/**\n * Executive dashboard (BOFF-4208). Workforce KPIs, attrition risk, headcount\n * plan, skills shortages and payroll run-rate come from the server-side\n * `crewExecutiveDashboard` rollup, so every figure is computed from the\n * workspace's real rows by one deterministic implementation rather than\n * re-derived in the browser. Project budget and department budget figures\n * still come from the bootstrap store, which already owns those rows.\n */\nexport function DashboardExecutiveDashboardPage() {\n const initialized = useCrewFoundryStore((state) => state.initialized);\n const workspaceId = useCrewFoundryStore((state) => state.initParams.workspaceId);\n const departments = useCrewFoundryStore((state) => state.departments);\n const projects = useCrewFoundryStore((state) => state.projects);\n const employees = useCrewFoundryStore((state) => state.employees);\n const analytics = useCrewFoundryStore((state) => state.executiveDashboard);\n const analyticsLoading = useCrewFoundryStore((state) => state.executiveDashboardLoading);\n const analyticsError = useCrewFoundryStore((state) => state.executiveDashboardError);\n const fetchExecutiveDashboard = useCrewFoundryStore((state) => state.fetchExecutiveDashboard);\n\n const loadAnalytics = useCallback(() => {\n void fetchExecutiveDashboard();\n }, [fetchExecutiveDashboard]);\n\n // Refresh on every visit and on every workspace switch: the rollup reflects\n // writes made elsewhere in the module, so a cached copy would go stale.\n useEffect(() => {\n if (!initialized || !workspaceId) return;\n loadAnalytics();\n }, [initialized, workspaceId, loadAnalytics]);\n\n const budget = useMemo(\n () => ({\n spent: projects.reduce((sum, p) => sum + p.spent, 0),\n total: projects.reduce((sum, p) => sum + p.budget, 0),\n }),\n [projects]\n );\n const retention = useMemo(\n () => ({\n retained: employees.filter((employee) => employee.status !== 'terminated').length,\n total: employees.length,\n }),\n [employees]\n );\n\n if (!initialized) {\n return (\n <div className=\"flex min-h-[60vh] items-center justify-center p-6\">\n <Spinner size=\"lg\" />\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Executive Dashboard</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Strategic workforce insights for leadership</p>\n <PagePurpose className=\"mt-1\">\n The executive snapshot — headcount, attrition risk, hiring plan, skills shortages and\n payroll run-rate in one view, computed from your workspace&apos;s own records.\n </PagePurpose>\n </div>\n <div className=\"flex items-center gap-2\">\n {analytics ? (\n <Badge variant=\"outline\">Updated {formatGeneratedAt(analytics.generatedAt)}</Badge>\n ) : null}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={loadAnalytics}\n disabled={analyticsLoading}\n aria-label=\"Refresh workforce analytics\"\n >\n <RefreshCw className={`mr-2 h-4 w-4 ${analyticsLoading ? 'animate-spin' : ''}`} />\n Refresh\n </Button>\n </div>\n </div>\n\n {analyticsError ? (\n <Card className=\"border-status-error-border\">\n <CardContent className=\"flex flex-wrap items-center justify-between gap-3 py-4\">\n <p className=\"text-sm text-status-error-text\">{analyticsError}</p>\n <Button variant=\"outline\" size=\"sm\" onClick={loadAnalytics}>\n Try again\n </Button>\n </CardContent>\n </Card>\n ) : null}\n\n {analytics ? (\n <WorkforceAnalyticsSections analytics={analytics} budget={budget} retention={retention} />\n ) : analyticsLoading ? (\n <div className=\"flex min-h-[12rem] items-center justify-center\">\n <Spinner size=\"md\" />\n </div>\n ) : null}\n\n <DepartmentBudgetCard departments={departments} />\n </div>\n );\n}\n"],"mappings":";;;;;;AA8BA,IAAM,IAA0B,GAE1B,IACJ;CACE,MAAM;CACN,QAAQ;CACR,KAAK;CACN;AAEH,SAAS,EAAY,GAAuB;AAG1C,QAFI,KAAK,IAAI,EAAM,IAAI,MAAkB,KAAK,IAAQ,KAAW,QAAQ,EAAE,CAAC,KACxE,KAAK,IAAI,EAAM,IAAI,MAAc,KAAK,IAAQ,KAAO,QAAQ,EAAE,CAAC,KAC7D,IAAI,KAAK,MAAM,EAAM;;AAG9B,SAAS,EAAkB,GAAqB;CAC9C,IAAM,IAAO,IAAI,KAAK,EAAI;AAE1B,QADI,OAAO,MAAM,EAAK,SAAS,CAAC,GAAS,KAClC,EAAK,eAAe,KAAA,GAAW;EAAE,WAAW;EAAU,WAAW;EAAS,CAAC;;AAGpF,IAAM,IAA+D;CACnE;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;GAAG,WAAU;aAAe,EAAK;GAAiB,CAAA,EAClD,kBAAC,KAAD;GAAG,WAAU;aAA+B,EAAK;GAAe,CAAA,CAC5D,EAAA,CAAA;EAET;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,GAAD;GAAO,SAAS,EAAmB,EAAK;aAAxC;IACG,EAAK,UAAU,OAAO,EAAE;IACxB,EAAK,UAAU,MAAM,EAAE,CAAC,aAAa;IAAC;IAAI,EAAK,UAAU,QAAQ,EAAE;IAC9D;;EAEX;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aACb,EAAK,QAAQ,SAAS,IAAI,EAAK,QAAQ,KAAK,KAAK,GAAG;GAChD,CAAA;EAEV;CACF,EAEK,IAAiE;CACrE;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAe,EAAI;GAAkB,CAAA;EACrE;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAAe,CAAA;EAC1F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAAoB,CAAA;EAC/F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAA0B,CAAA;EAExF;CACF,EAEK,IAAkE;CACtE;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAe,EAAI;GAAa,CAAA;EAChE;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAA0B,CAAA;EAExF;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAA8B,CAAA;EAE5F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aACb,EAAI;GACA,CAAA;EAEV;CACF,EAEK,IAA8D;CAClE;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAe,EAAI;GAAkB,CAAA;EACrE;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAQ,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAI;GAAiB,CAAA;EAC5F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAY,EAAI,QAAQ;GAAQ,CAAA;EAE1F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MACL,kBAAC,QAAD;GAAM,WAAU;aAAuC,EAAY,EAAI,OAAO;GAAQ,CAAA;EAEzF;CACF,EAEK,IAAyD;CAC7D;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAS,kBAAC,QAAD;GAAM,WAAU;aAAe,EAAK;GAAY,CAAA;EACjE;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAS,kBAAC,QAAD;GAAM,WAAU;aAAuB,EAAK;GAAgB,CAAA;EAC7E;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAS,kBAAC,QAAD;GAAM,WAAU;aAA0B,EAAK;GAAqB,CAAA;EACrF;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAAS,kBAAC,QAAD;GAAM,WAAU;aAA0B,EAAY,EAAK,OAAO;GAAQ,CAAA;EAC3F;CACD;EACE,KAAK;EACL,QAAQ;EACR,UAAU;EACV,OAAO,MAEE,kBAAC,QAAD;GAAM,WAAU;aAA0B,EAD9B,EAAK,gBAAgB,IAAI,KAAK,MAAM,EAAK,SAAS,EAAK,cAAc,GAAG,EACnB;GAAQ,CAAA;EAEnF;CACF;AAWD,SAAS,EAAQ,EAAE,UAAO,UAAO,YAAS,SAAM,aAAwB;AACtE,QACE,kBAAC,GAAD;EAAW,WAAU;EAAS,WAAU;EAAqB,eAAa;YAA1E,CACE,kBAAC,GAAD;GAAY,WAAU;aAAtB,CACE,kBAAC,GAAD;IAAW,WAAU;cAAuB;IAAkB,CAAA,EAC7D,EACU;MACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;aAAmC;GAAY,CAAA,EAC9D,kBAAC,KAAD;GAAG,WAAU;aAA+B;GAAY,CAAA,CAC5C,EAAA,CAAA,CACJ;;;AAIhB,SAAS,EAAc,EACrB,cACA,WACA,gBAKC;CACD,IAAM,IAAgB,EAAU,eAAe,QAAQ,GAAK,MAAQ,IAAM,EAAI,QAAQ,EAAE,EAClF,IAAY,EAAU,aAAa,QAAQ,GAAK,MAAQ,IAAM,EAAI,cAAc,EAAE,EAClF,IAAoB,EAAO,QAAQ,IAAI,KAAK,MAAO,EAAO,QAAQ,EAAO,QAAS,IAAI,GAAG,GAGzF,IACJ,EAAU,QAAQ,IAAI,GAAG,KAAK,MAAO,EAAU,WAAW,EAAU,QAAS,IAAI,CAAC,KAAK,KACnF,IAAY;AAElB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,OAAM;IACN,OAAO,EAAU;IACjB,SAAS,GAAG,EAAU,eAAe;IACrC,MAAM,kBAAC,GAAD,EAAO,WAAW,GAAa,CAAA;IACrC,QAAO;IACP,CAAA;GACF,kBAAC,GAAD;IACE,OAAM;IACN,OAAO,GAAG,EAAU,mBAAmB,KAAK,EAAU;IACtD,SAAS,GAAG,EAAU,mBAAmB,WAAW,EAAU,gBAAgB;IAC9E,MAAM,kBAAC,GAAD,EAAU,WAAW,GAAa,CAAA;IACxC,CAAA;GACF,kBAAC,GAAD;IACE,OAAM;IACN,OAAO,GAAG,EAAU,oBAAoB,QAAQ,EAAE,CAAC;IACnD,SAAS,uBAAuB,EAAU,wBAAwB,QAAQ,EAAE,CAAC;IAC7E,MAAM,kBAAC,GAAD,EAAQ,WAAW,GAAa,CAAA;IACtC,CAAA;GACF,kBAAC,GAAD;IACE,OAAM;IACN,OAAO;IACP,SAAS,GAAG,EAAU,QAAQ,EAAU,SAAS,MAAM,EAAU,MAAM;IACvE,MAAM,kBAAC,GAAD,EAAQ,WAAW,GAAa,CAAA;IACtC,CAAA;GACF,kBAAC,GAAD;IACE,OAAM;IACN,OAAO,EAAY,EAAc;IACjC,SAAS,sCAAsC,EAAU,YAAY,MAAc,IAAI,KAAK,IAAI;IAChG,MAAM,kBAAC,GAAD,EAAW,WAAW,GAAa,CAAA;IACzC,QAAO;IACP,CAAA;GACF,kBAAC,GAAD;IACE,OAAM;IACN,OAAO,GAAG,EAAkB;IAC5B,SAAS,GAAG,EAAY,EAAO,MAAM,CAAC,MAAM,EAAY,EAAO,MAAM,CAAC;IACtE,MAAM,kBAAC,GAAD,EAAS,WAAW,GAAa,CAAA;IACvC,CAAA;GACE;;;AAIV,IAAM,IAAa;CACjB;EAAE,KAAK;EAAQ,OAAO;EAAQ,KAAK;EAAwB;CAC3D;EAAE,KAAK;EAAU,OAAO;EAAU,KAAK;EAA0B;CACjE;EAAE,KAAK;EAAO,OAAO;EAAO,KAAK;EAA0B;CAC5D;AAED,SAAS,EAAkB,EAAE,WAA2D;CACtF,IAAM,IAAS;EAAE,MAAM,EAAK;EAAW,QAAQ,EAAK;EAAa,KAAK,EAAK;EAAU;AACrF,QACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAW,kBAA0B,CAAA,EACrC,kBAAC,GAAD,EAAA,UAAiB,sIAGC,CAAA,CACP,EAAA,CAAA,EACb,kBAAC,GAAD;EAAa,WAAU;YAAvB,CACE,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAW,KAAK,MACf,kBAAC,OAAD;IAEE,WAAU;IACV,eAAa,aAAa,EAAK;cAHjC,CAKE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD,EAAK,WAAW,wBAAwB,EAAK,OAAS,CAAA,EACtD,kBAAC,KAAD;MAAG,WAAU;gBAAb,CAAoC,EAAK,OAAM,QAAS;QACpD;QACN,kBAAC,QAAD;KAAM,WAAU;eAAkC,EAAO,EAAK;KAAY,CAAA,CACtE;MATC,EAAK,IASN,CACN;GACE,CAAA,EACL,EAAK,kBAAkB,IACtB,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,aAAY;GACZ,CAAA,GAEF,kBAAC,GAAD;GACE,SAAS;GACT,MAAM,EAAK;GACX,SAAS,MAAQ,EAAI;GACrB,CAAA,CAEQ;IACT,EAAA,CAAA;;AAcX,SAAS,EAAa,EACpB,UACA,gBACA,YACA,SACA,WACA,eACA,uBACoB;AACpB,QACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA,EAC9B,kBAAC,GAAD,EAAA,UAAkB,GAA8B,CAAA,CACrC,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UACG,EAAK,SAAS,IACb,kBAAC,GAAD;EAA0B;EAAS,MAAM;EAAc;EAAU,CAAA,GAEjE,kBAAC,GAAD;EACE,cAAa;EACb,OAAO;EACP,aAAa;EACb,CAAA,EAEQ,CAAA,CACT,EAAA,CAAA;;AAIX,SAAS,EAA2B,EAClC,cACA,WACA,gBAKC;CACD,IAAM,IAAiB,EAAU,UAC9B,QAAQ,MAAQ,EAAI,WAAW,EAAE,CACjC,MAAM,GAAG,EAAwB;AACpC,QACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAA0B;GAAmB;GAAmB;GAAa,CAAA;EAC7E,kBAAC,GAAD,EAAmB,MAAM,EAAU,eAAiB,CAAA;EACpD,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IACE,OAAM;IACN,aAAY;IACZ,SAAS;IACT,MAAM,EAAU;IAChB,SAAS,MAAQ,EAAI;IACrB,YAAW;IACX,kBAAiB;IACjB,CAAA,EACF,kBAAC,GAAD;IACE,OAAM;IACN,aAAY;IACZ,SAAS;IACT,MAAM;IACN,SAAS,MAAQ,EAAI;IACrB,YAAW;IACX,kBAAiB;IACjB,CAAA,CACE;;EACN,kBAAC,GAAD;GACE,OAAM;GACN,aAAY;GACZ,SAAS;GACT,MAAM,EAAU;GAChB,SAAS,MAAQ,EAAI;GACrB,YAAW;GACX,kBAAiB;GACjB,CAAA;EACD,EAAA,CAAA;;AAIP,SAAS,EAAqB,EAAE,kBAA8C;CAC5E,IAAM,IAAkB,EAAY,QAAQ,GAAK,MAAM,IAAM,EAAE,QAAQ,EAAE,EACnE,IAAiB,EAAY,QAAQ,GAAK,MAAM,IAAM,EAAE,eAAe,EAAE,EACzE,IAAqB,IAAiB,IAAI,IAAkB,IAAiB;AACnF,QACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAW,4BAAoC,CAAA,EAC/C,kBAAC,GAAD,EAAA,UAAiB,0CAAwD,CAAA,CAC9D,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAS;GACT,MAAM;GACN,SAAS,MAAS,EAAK;GACvB,CAAA;EACF,kBAAC,GAAD,EAAW,WAAU,QAAS,CAAA;EAC9B,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,QAAD,EAAA,UAAM,SAAY,CAAA;IAClB,kBAAC,QAAD,EAAA,UAAA,CAAO,GAAe,aAAiB,EAAA,CAAA;IACvC,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAY,EAAgB,EAAC,UAAc,EAAA,CAAA;IAClD,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAY,EAAmB,EAAC,cAAkB,EAAA,CAAA;IACrD;;EACM,EAAA,CAAA,CACT,EAAA,CAAA;;AAYX,SAAgB,IAAkC;CAChD,IAAM,IAAc,GAAqB,MAAU,EAAM,YAAY,EAC/D,IAAc,GAAqB,MAAU,EAAM,WAAW,YAAY,EAC1E,IAAc,GAAqB,MAAU,EAAM,YAAY,EAC/D,IAAW,GAAqB,MAAU,EAAM,SAAS,EACzD,IAAY,GAAqB,MAAU,EAAM,UAAU,EAC3D,IAAY,GAAqB,MAAU,EAAM,mBAAmB,EACpE,IAAmB,GAAqB,MAAU,EAAM,0BAA0B,EAClF,IAAiB,GAAqB,MAAU,EAAM,wBAAwB,EAC9E,IAA0B,GAAqB,MAAU,EAAM,wBAAwB,EAEvF,IAAgB,QAAkB;AACjC,KAAyB;IAC7B,CAAC,EAAwB,CAAC;AAI7B,SAAgB;AACV,GAAC,KAAe,CAAC,KACrB,GAAe;IACd;EAAC;EAAa;EAAa;EAAc,CAAC;CAE7C,IAAM,IAAS,SACN;EACL,OAAO,EAAS,QAAQ,GAAK,MAAM,IAAM,EAAE,OAAO,EAAE;EACpD,OAAO,EAAS,QAAQ,GAAK,MAAM,IAAM,EAAE,QAAQ,EAAE;EACtD,GACD,CAAC,EAAS,CACX,EACK,IAAY,SACT;EACL,UAAU,EAAU,QAAQ,MAAa,EAAS,WAAW,aAAa,CAAC;EAC3E,OAAO,EAAU;EAClB,GACD,CAAC,EAAU,CACZ;AAUD,QARK,IASH,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;gBACZ,kBAAC,GAAD,EAAA,UAAc,uBAAkC,CAAA;MAC7C,CAAA;KACL,kBAAC,KAAD;MAAG,WAAU;gBAA8B;MAA+C,CAAA;KAC1F,kBAAC,GAAD;MAAa,WAAU;gBAAO;MAGhB,CAAA;KACV,EAAA,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,IACC,kBAAC,GAAD;MAAO,SAAQ;gBAAf,CAAyB,YAAS,EAAkB,EAAU,YAAY,CAAS;UACjF,MACJ,kBAAC,GAAD;MACE,SAAQ;MACR,MAAK;MACL,SAAS;MACT,UAAU;MACV,cAAW;gBALb,CAOE,kBAAC,GAAD,EAAW,WAAW,gBAAgB,IAAmB,iBAAiB,MAAQ,CAAA,EAAA,UAE3E;QACL;OACF;;GAEL,IACC,kBAAC,GAAD;IAAM,WAAU;cACd,kBAAC,GAAD;KAAa,WAAU;eAAvB,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAkC;MAAmB,CAAA,EAClE,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAS;gBAAe;MAEnD,CAAA,CACG;;IACT,CAAA,GACL;GAEH,IACC,kBAAC,GAAD;IAAuC;IAAmB;IAAmB;IAAa,CAAA,GACxF,IACF,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAAS,MAAK,MAAO,CAAA;IACjB,CAAA,GACJ;GAEJ,kBAAC,GAAD,EAAmC,gBAAe,CAAA;GAC9C;MAxDJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,MAAK,MAAO,CAAA;EACjB,CAAA"}
1
+ {"version":3,"file":"DashboardExecutiveDashboardPage.js","names":[],"sources":["../../../src/crewfoundry/pages/DashboardExecutiveDashboardPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n ResponsiveTable,\n type ResponsiveTableColumn,\n Separator,\n Spinner,\n} from '@burdenoff/fe-libs/ui';\nimport { Building2, Percent, RefreshCw, Target, UserPlus, Users } from 'lucide-react';\nimport { type ReactNode, useCallback, useEffect, useMemo } from 'react';\nimport { WorkforceForecastCard } from '../components/WorkforceForecastCard';\nimport {\n useCrewFoundryStore,\n type CrewAttritionRisk,\n type CrewAttritionRiskLevel,\n type CrewCostProjectionRow,\n type CrewExecutiveDashboard,\n type CrewHeadcountGapRow,\n type CrewSkillsGapRow,\n type Department,\n} from '../store/crewfoundryStore';\n\nconst MAX_SKILL_SHORTAGE_ROWS = 8;\n\nconst RISK_BADGE_VARIANT: Record<CrewAttritionRiskLevel, 'destructive' | 'warning' | 'secondary'> =\n {\n HIGH: 'destructive',\n MEDIUM: 'warning',\n LOW: 'secondary',\n };\n\nfunction formatMoney(value: number): string {\n if (Math.abs(value) >= 1_000_000) return `$${(value / 1_000_000).toFixed(1)}M`;\n if (Math.abs(value) >= 1_000) return `$${(value / 1_000).toFixed(0)}K`;\n return `$${Math.round(value)}`;\n}\n\nfunction formatGeneratedAt(iso: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return '';\n return date.toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' });\n}\n\nconst attritionColumns: ResponsiveTableColumn<CrewAttritionRisk>[] = [\n {\n key: 'employee',\n header: 'Employee',\n priority: 'primary',\n cell: (risk) => (\n <div>\n <p className=\"font-medium\">{risk.employeeName}</p>\n <p className=\"text-xs text-text-secondary\">{risk.department}</p>\n </div>\n ),\n },\n {\n key: 'level',\n header: 'Risk',\n priority: 'primary',\n cell: (risk) => (\n <Badge variant={RISK_BADGE_VARIANT[risk.riskLevel]}>\n {risk.riskLevel.charAt(0)}\n {risk.riskLevel.slice(1).toLowerCase()} · {risk.riskScore.toFixed(2)}\n </Badge>\n ),\n },\n {\n key: 'drivers',\n header: 'Drivers',\n priority: 'secondary',\n cell: (risk) => (\n <span className=\"text-sm text-text-secondary\">\n {risk.drivers.length > 0 ? risk.drivers.join(', ') : 'No risk signals'}\n </span>\n ),\n },\n];\n\nconst headcountColumns: ResponsiveTableColumn<CrewHeadcountGapRow>[] = [\n {\n key: 'department',\n header: 'Department',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.department}</span>,\n },\n {\n key: 'current',\n header: 'Active',\n priority: 'secondary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.current}</span>,\n },\n {\n key: 'open',\n header: 'Open roles',\n priority: 'primary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.openPostings}</span>,\n },\n {\n key: 'projected',\n header: 'Projected',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.projectedHeadcount}</span>\n ),\n },\n];\n\nconst skillShortageColumns: ResponsiveTableColumn<CrewSkillsGapRow>[] = [\n {\n key: 'skill',\n header: 'Skill',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.skill}</span>,\n },\n {\n key: 'supply',\n header: 'People',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.employeesWithSkill}</span>\n ),\n },\n {\n key: 'demand',\n header: 'Open roles',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{row.openJobsRequiringSkill}</span>\n ),\n },\n {\n key: 'shortage',\n header: 'Shortage',\n priority: 'primary',\n cell: (row) => (\n <span className=\"font-semibold tabular-nums text-status-warning-text md:block md:text-right\">\n {row.shortage}\n </span>\n ),\n },\n];\n\nconst costColumns: ResponsiveTableColumn<CrewCostProjectionRow>[] = [\n {\n key: 'department',\n header: 'Department',\n priority: 'primary',\n cell: (row) => <span className=\"font-medium\">{row.department}</span>,\n },\n {\n key: 'headcount',\n header: 'Active',\n priority: 'secondary',\n cell: (row) => <span className=\"tabular-nums md:block md:text-right\">{row.headcount}</span>,\n },\n {\n key: 'monthly',\n header: 'Monthly',\n priority: 'secondary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{formatMoney(row.monthly)}</span>\n ),\n },\n {\n key: 'annual',\n header: 'Annual',\n priority: 'primary',\n cell: (row) => (\n <span className=\"tabular-nums md:block md:text-right\">{formatMoney(row.annual)}</span>\n ),\n },\n];\n\nconst departmentColumns: ResponsiveTableColumn<Department>[] = [\n {\n key: 'name',\n header: 'Department',\n priority: 'primary',\n cell: (dept) => <span className=\"font-medium\">{dept.name}</span>,\n },\n {\n key: 'head',\n header: 'Head',\n priority: 'secondary',\n cell: (dept) => <span className=\"text-text-secondary\">{dept.headName}</span>,\n },\n {\n key: 'headcount',\n header: 'Headcount',\n priority: 'secondary',\n cell: (dept) => <span className=\"md:block md:text-right\">{dept.employeeCount}</span>,\n },\n {\n key: 'budget',\n header: 'Budget',\n priority: 'secondary',\n cell: (dept) => <span className=\"md:block md:text-right\">{formatMoney(dept.budget)}</span>,\n },\n {\n key: 'costPerEmployee',\n header: 'Cost/Employee',\n priority: 'primary',\n cell: (dept) => {\n const costPerEmp = dept.employeeCount > 0 ? Math.round(dept.budget / dept.employeeCount) : 0;\n return <span className=\"md:block md:text-right\">{formatMoney(costPerEmp)}</span>;\n },\n },\n];\n\ninterface KpiTileProps {\n label: string;\n value: ReactNode;\n caption: string;\n icon?: ReactNode;\n testId?: string;\n}\n\n/** Metric tile whose caption always renders (StatCard hides it without a delta). */\nfunction KpiTile({ label, value, caption, icon, testId }: KpiTileProps) {\n return (\n <GlassCard treatment=\"metric\" className=\"border-border-seam\" data-testid={testId}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">{label}</CardTitle>\n {icon}\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{value}</div>\n <p className=\"text-xs text-text-secondary\">{caption}</p>\n </CardContent>\n </GlassCard>\n );\n}\n\nfunction WorkforceKpis({\n analytics,\n budget,\n retention,\n}: {\n analytics: CrewExecutiveDashboard;\n budget: { spent: number; total: number };\n retention: { retained: number; total: number };\n}) {\n const annualRunRate = analytics.costProjection.reduce((sum, row) => sum + row.annual, 0);\n const openRoles = analytics.headcountGap.reduce((sum, row) => sum + row.openPostings, 0);\n const budgetUtilization = budget.total > 0 ? Math.round((budget.spent / budget.total) * 100) : 0;\n // Retention counts everyone still employed (on leave and inactive\n // included); only terminated people have left.\n const retentionRate =\n retention.total > 0 ? `${Math.round((retention.retained / retention.total) * 100)}%` : '—';\n const iconClass = 'h-4 w-4 text-text-secondary';\n\n return (\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <KpiTile\n label=\"Active headcount\"\n value={analytics.activeHeadcount}\n caption={`${analytics.totalHeadcount} people on record`}\n icon={<Users className={iconClass} />}\n testId=\"kpi-active-headcount\"\n />\n <KpiTile\n label=\"Hires and exits (90 days)\"\n value={`${analytics.newHiresLast90Days} / ${analytics.exitsLast90Days}`}\n caption={`${analytics.newHiresLast90Days} joined, ${analytics.exitsLast90Days} left`}\n icon={<UserPlus className={iconClass} />}\n />\n <KpiTile\n label=\"Average tenure\"\n value={`${analytics.averageTenureMonths.toFixed(1)} mo`}\n caption={`Average performance ${analytics.averagePerformanceScore.toFixed(2)} of 5`}\n icon={<Target className={iconClass} />}\n />\n <KpiTile\n label=\"Retention rate\"\n value={retentionRate}\n caption={`${retention.total - retention.retained} of ${retention.total} people on record have left`}\n icon={<Target className={iconClass} />}\n />\n <KpiTile\n label=\"Payroll run-rate\"\n value={formatMoney(annualRunRate)}\n caption={`Annual salary of active employees; ${openRoles} open role${openRoles === 1 ? '' : 's'} not included`}\n icon={<Building2 className={iconClass} />}\n testId=\"kpi-payroll-run-rate\"\n />\n <KpiTile\n label=\"Budget utilization\"\n value={`${budgetUtilization}%`}\n caption={`${formatMoney(budget.spent)} of ${formatMoney(budget.total)} project budget`}\n icon={<Percent className={iconClass} />}\n />\n </div>\n );\n}\n\nconst RISK_BANDS = [\n { key: 'high', label: 'High', dot: 'bg-status-error-text' },\n { key: 'medium', label: 'Medium', dot: 'bg-status-warning-text' },\n { key: 'low', label: 'Low', dot: 'bg-status-success-text' },\n] as const;\n\nfunction AttritionRiskCard({ risk }: { risk: CrewExecutiveDashboard['attritionRisk'] }) {\n const counts = { high: risk.highCount, medium: risk.mediumCount, low: risk.lowCount };\n return (\n <Card>\n <CardHeader>\n <CardTitle>Attrition risk</CardTitle>\n <CardDescription>\n Heuristic risk bands from performance, tenure, contract type and recent leave. A signal to\n start a conversation, not a prediction.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid gap-3 sm:grid-cols-3\">\n {RISK_BANDS.map((band) => (\n <div\n key={band.key}\n className=\"flex items-center justify-between rounded border p-3\"\n data-testid={`attrition-${band.key}`}\n >\n <div className=\"flex items-center gap-3\">\n <div className={`h-3 w-3 rounded-full ${band.dot}`} />\n <p className=\"text-sm font-medium\">{band.label} risk</p>\n </div>\n <span className=\"text-lg font-bold tabular-nums\">{counts[band.key]}</span>\n </div>\n ))}\n </div>\n {risk.totalAssessed === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No active employees to assess\"\n description=\"Add employees to see where retention attention is needed.\"\n />\n ) : (\n <ResponsiveTable\n columns={attritionColumns}\n data={risk.topRisks}\n rowKey={(row) => row.employeeId}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\ninterface TableCardProps<T> {\n title: string;\n description: string;\n columns: ResponsiveTableColumn<T>[];\n rows: T[];\n rowKey: (row: T) => string;\n emptyTitle: string;\n emptyDescription: string;\n}\n\nfunction TableCard<T>({\n title,\n description,\n columns,\n rows,\n rowKey,\n emptyTitle,\n emptyDescription,\n}: TableCardProps<T>) {\n return (\n <Card>\n <CardHeader>\n <CardTitle>{title}</CardTitle>\n <CardDescription>{description}</CardDescription>\n </CardHeader>\n <CardContent>\n {rows.length > 0 ? (\n <ResponsiveTable columns={columns} data={rows} rowKey={rowKey} />\n ) : (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={emptyTitle}\n description={emptyDescription}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\nfunction WorkforceAnalyticsSections({\n analytics,\n budget,\n retention,\n}: {\n analytics: CrewExecutiveDashboard;\n budget: { spent: number; total: number };\n retention: { retained: number; total: number };\n}) {\n const skillShortages = analytics.skillsGap\n .filter((row) => row.shortage > 0)\n .slice(0, MAX_SKILL_SHORTAGE_ROWS);\n return (\n <>\n <WorkforceKpis analytics={analytics} budget={budget} retention={retention} />\n <AttritionRiskCard risk={analytics.attritionRisk} />\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <TableCard\n title=\"Headcount plan\"\n description=\"Active people per department plus open (active or paused) roles.\"\n columns={headcountColumns}\n rows={analytics.headcountGap}\n rowKey={(row) => row.department}\n emptyTitle=\"No headcount yet\"\n emptyDescription=\"Departments appear here once they have active people or open roles.\"\n />\n <TableCard\n title=\"Skills shortages\"\n description=\"Skills open roles ask for that more roles need than people have.\"\n columns={skillShortageColumns}\n rows={skillShortages}\n rowKey={(row) => row.skill}\n emptyTitle=\"No skills shortages\"\n emptyDescription=\"Every skill listed on an open role is covered by at least as many active employees.\"\n />\n </div>\n <TableCard\n title=\"Payroll run-rate by department\"\n description=\"Annualised salary of active employees\"\n columns={costColumns}\n rows={analytics.costProjection}\n rowKey={(row) => row.department}\n emptyTitle=\"No salaried employees yet\"\n emptyDescription=\"Record salaries on active employees to see the run-rate.\"\n />\n </>\n );\n}\n\nfunction DepartmentBudgetCard({ departments }: { departments: Department[] }) {\n const totalDeptBudget = departments.reduce((sum, d) => sum + d.budget, 0);\n const totalHeadcount = departments.reduce((sum, d) => sum + d.employeeCount, 0);\n const avgCostPerEmployee = totalHeadcount > 0 ? totalDeptBudget / totalHeadcount : 0;\n return (\n <Card>\n <CardHeader>\n <CardTitle>Department Budget Status</CardTitle>\n <CardDescription>Annual budget allocation and headcount</CardDescription>\n </CardHeader>\n <CardContent>\n <ResponsiveTable\n columns={departmentColumns}\n data={departments}\n rowKey={(dept) => dept.id}\n />\n <Separator className=\"my-3\" />\n <div className=\"flex flex-wrap items-center justify-between gap-2 text-sm font-bold\">\n <span>Total</span>\n <span>{totalHeadcount} employees</span>\n <span>{formatMoney(totalDeptBudget)} budget</span>\n <span>{formatMoney(avgCostPerEmployee)} / employee</span>\n </div>\n </CardContent>\n </Card>\n );\n}\n\n/**\n * Executive dashboard (BOFF-4208). Workforce KPIs, attrition risk, headcount\n * plan, skills shortages and payroll run-rate come from the server-side\n * `crewExecutiveDashboard` rollup, so every figure is computed from the\n * workspace's real rows by one deterministic implementation rather than\n * re-derived in the browser. Project budget and department budget figures\n * still come from the bootstrap store, which already owns those rows. The\n * workforce forecast card (BOFF-10826) adds the trained attrition model and\n * the 3/6/12-month headcount and cost projection.\n */\nexport function DashboardExecutiveDashboardPage() {\n const initialized = useCrewFoundryStore((state) => state.initialized);\n const workspaceId = useCrewFoundryStore((state) => state.initParams.workspaceId);\n const departments = useCrewFoundryStore((state) => state.departments);\n const projects = useCrewFoundryStore((state) => state.projects);\n const employees = useCrewFoundryStore((state) => state.employees);\n const analytics = useCrewFoundryStore((state) => state.executiveDashboard);\n const analyticsLoading = useCrewFoundryStore((state) => state.executiveDashboardLoading);\n const analyticsError = useCrewFoundryStore((state) => state.executiveDashboardError);\n const fetchExecutiveDashboard = useCrewFoundryStore((state) => state.fetchExecutiveDashboard);\n const forecast = useCrewFoundryStore((state) => state.workforceForecast);\n const forecastLoading = useCrewFoundryStore((state) => state.workforceForecastLoading);\n const forecastError = useCrewFoundryStore((state) => state.workforceForecastError);\n const fetchWorkforceForecast = useCrewFoundryStore((state) => state.fetchWorkforceForecast);\n\n const loadForecast = useCallback(() => {\n void fetchWorkforceForecast();\n }, [fetchWorkforceForecast]);\n\n // The forecast (BOFF-10826) loads alongside the deterministic rollup but in\n // its own request, so a slow or failed forecast never blocks the rollup.\n const loadAnalytics = useCallback(() => {\n void fetchExecutiveDashboard();\n loadForecast();\n }, [fetchExecutiveDashboard, loadForecast]);\n\n // Refresh on every visit and on every workspace switch: the rollup reflects\n // writes made elsewhere in the module, so a cached copy would go stale.\n useEffect(() => {\n if (!initialized || !workspaceId) return;\n loadAnalytics();\n }, [initialized, workspaceId, loadAnalytics]);\n\n const budget = useMemo(\n () => ({\n spent: projects.reduce((sum, p) => sum + p.spent, 0),\n total: projects.reduce((sum, p) => sum + p.budget, 0),\n }),\n [projects]\n );\n const retention = useMemo(\n () => ({\n retained: employees.filter((employee) => employee.status !== 'terminated').length,\n total: employees.length,\n }),\n [employees]\n );\n\n if (!initialized) {\n return (\n <div className=\"flex min-h-[60vh] items-center justify-center p-6\">\n <Spinner size=\"lg\" />\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Executive Dashboard</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Strategic workforce insights for leadership</p>\n <PagePurpose className=\"mt-1\">\n The executive snapshot — headcount, attrition risk, hiring plan, skills shortages and\n payroll run-rate in one view, computed from your workspace&apos;s own records.\n </PagePurpose>\n </div>\n <div className=\"flex items-center gap-2\">\n {analytics ? (\n <Badge variant=\"outline\">Updated {formatGeneratedAt(analytics.generatedAt)}</Badge>\n ) : null}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={loadAnalytics}\n disabled={analyticsLoading || forecastLoading}\n aria-label=\"Refresh workforce analytics\"\n >\n <RefreshCw\n className={`mr-2 h-4 w-4 ${analyticsLoading || forecastLoading ? 'animate-spin' : ''}`}\n />\n Refresh\n </Button>\n </div>\n </div>\n\n {analyticsError ? (\n <Card className=\"border-status-error-border\">\n <CardContent className=\"flex flex-wrap items-center justify-between gap-3 py-4\">\n <p className=\"text-sm text-status-error-text\">{analyticsError}</p>\n <Button variant=\"outline\" size=\"sm\" onClick={loadAnalytics}>\n Try again\n </Button>\n </CardContent>\n </Card>\n ) : null}\n\n {analytics ? (\n <WorkforceAnalyticsSections analytics={analytics} budget={budget} retention={retention} />\n ) : analyticsLoading ? (\n <div className=\"flex min-h-[12rem] items-center justify-center\">\n <Spinner size=\"md\" />\n </div>\n ) : null}\n\n <WorkforceForecastCard\n forecast={forecast}\n loading={forecastLoading}\n error={forecastError}\n onRetry={loadForecast}\n />\n\n <DepartmentBudgetCard departments={departments} />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -376,6 +376,59 @@ export interface CrewExecutiveDashboard {
376
376
  costProjection: CrewCostProjectionRow[];
377
377
  generatedAt: string;
378
378
  }
379
+ export type CrewAttritionModelStatus = 'ACTIVE' | 'HEURISTIC_PREFERRED' | 'INSUFFICIENT_DATA';
380
+ export interface CrewAttritionPrediction {
381
+ employeeId: string;
382
+ employeeName: string;
383
+ department: string;
384
+ heuristicRiskLevel: CrewAttritionRiskLevel;
385
+ heuristicRiskScore: number;
386
+ drivers: string[];
387
+ predictedExitProbability: number | null;
388
+ source: 'MODEL' | 'HEURISTIC';
389
+ }
390
+ export interface CrewAttritionForecast {
391
+ model: {
392
+ status: CrewAttritionModelStatus;
393
+ horizonDays: number;
394
+ trainingSamples: number;
395
+ trainingExits: number;
396
+ excludedFeatures: string[];
397
+ reason: string;
398
+ backtest: {
399
+ testSamples: number;
400
+ testExits: number;
401
+ modelAuc: number | null;
402
+ heuristicAuc: number | null;
403
+ };
404
+ };
405
+ predictions: CrewAttritionPrediction[];
406
+ }
407
+ export interface CrewHeadcountForecastHorizon {
408
+ months: number;
409
+ projectedHeadcount: number;
410
+ low: number;
411
+ high: number;
412
+ expectedHires: number;
413
+ expectedExits: number;
414
+ projectedMonthlyCost: number;
415
+ cumulativeCost: number;
416
+ }
417
+ export interface CrewHeadcountForecast {
418
+ status: 'OK' | 'LIMITED_HISTORY';
419
+ currentHeadcount: number;
420
+ openRequisitions: number;
421
+ observationMonths: number;
422
+ hiresPerMonth: number;
423
+ monthlyExitRate: number;
424
+ currentMonthlyCost: number;
425
+ horizons: CrewHeadcountForecastHorizon[];
426
+ assumptions: string[];
427
+ }
428
+ export interface CrewWorkforceForecast {
429
+ attrition: CrewAttritionForecast;
430
+ headcount: CrewHeadcountForecast;
431
+ }
379
432
  export interface CrewPayrollRun {
380
433
  id: string;
381
434
  country: 'US' | 'IN' | 'GB';
@@ -589,6 +642,9 @@ interface CrewFoundryState {
589
642
  executiveDashboard: CrewExecutiveDashboard | null;
590
643
  executiveDashboardLoading: boolean;
591
644
  executiveDashboardError: string | null;
645
+ workforceForecast: CrewWorkforceForecast | null;
646
+ workforceForecastLoading: boolean;
647
+ workforceForecastError: string | null;
592
648
  trainingCourses: CrewTrainingCourse[];
593
649
  enrollments: CrewEnrollment[];
594
650
  trainingCompletion: CrewTrainingCourseCompletion[];
@@ -727,6 +783,7 @@ interface CrewFoundryState {
727
783
  toggleOnboardingTask: (id: string, completed: boolean) => Promise<void>;
728
784
  fetchSkillsGap: () => Promise<void>;
729
785
  fetchExecutiveDashboard: () => Promise<void>;
786
+ fetchWorkforceForecast: () => Promise<void>;
730
787
  fetchLearning: () => Promise<void>;
731
788
  createTrainingCourse: (input: CrewTrainingCourseInput) => Promise<CrewTrainingCourse>;
732
789
  updateTrainingCourse: (id: string, input: Partial<CrewTrainingCourseInput>) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"crewfoundryStore.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/store/crewfoundryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crewfoundryStore.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/store/crewfoundryStore.ts"],"names":[],"mappings":"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"}