"use client"; import { Plus } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import { useHireWizard } from "@/components/hire/HireWizardContext"; import type { OpenPositionResolved } from "@/lib/positions"; import { CreatePositionModal } from "./CreatePositionModal"; import { StaffInternallyModal } from "./StaffInternallyModal"; type Team = { id: string; org_number: string; name: string; lead: { id: string; name: string } | null; headcount: number; fte: number; openCount: number; }; type Department = { id: string; org_number: string; name: string; teams: Team[] }; type DivisionCard = { id: string; org_number: string; name: string; head: { id: string; name: string } | null; headcount: number; departments: Department[]; }; type OpenPositionWithDays = OpenPositionResolved & { daysOpen: number }; type PositionsPageClientProps = { openPositions: OpenPositionWithDays[]; divisionCards: DivisionCard[]; teams: { id: string; org_number: string; name: string; department_id: string }[]; }; export function PositionsPageClient({ openPositions, divisionCards, teams }: PositionsPageClientProps) { const { openWizard } = useHireWizard(); const [createOpen, setCreateOpen] = useState(false); const [staffTarget, setStaffTarget] = useState<{ id: string; title: string; is_lead: boolean } | null>(null); return (

Offene Positionen ({openPositions.length})

{openPositions.length === 0 ? (

Derzeit keine offenen Positionen.

) : (
{openPositions.map((p) => (
{p.title}
{p.position_number} · {p.orgLabel}
seit {p.daysOpen} Tagen offen
))}
)}
{divisionCards.map((div) => (
{div.org_number}
{div.name}
{div.head && ( {div.head.name} )}
{div.headcount} Mitarbeiter:innen
{div.departments.map((dept) => (
{dept.org_number} · {dept.name}
{dept.teams.map((team) => ( ))}
Team Teamleitung Headcount FTE Offen
{team.name}
{team.org_number}
{team.lead ? ( {team.lead.name} ) : ( "–" )} {team.headcount} {team.fte.toFixed(1)} {team.openCount || "–"}
))}
))} setCreateOpen(false)} teams={teams} /> {staffTarget && ( setStaffTarget(null)} positionId={staffTarget.id} positionTitle={staffTarget.title} isLead={staffTarget.is_lead} /> )}
); }