'use client' import { useState } from 'react' import { Button, Text, Drawer, Stack, } from '@pikku/mantine/core' import { IconInfoCircle, IconBriefcase, IconFile, IconCircleCheck, IconLanguage, IconExternalLink, } from '@tabler/icons-react' import GetHelp from './GetHelp' import ConnectWithEmployers from './ConnectWithEmployers' import CompareOptionsRecognition from './CompareOptionsRecognition' import { useI18n } from '@/context/i18n-provider' import { asI18n } from '@pikku/react' import DocumentsChecklist from './DocumentsChecklist' import HowToApply from './HowToApply' import GermanLanguageTips from './GermanLanguageTips' import ApplicantProfile from './ApplicantProfile' import { ExpandableSteps, type ExpandableStep } from '@/components/common/ExpandableSteps' import { useMantineTheme } from '@pikku/mantine/core' import { NextSteps as NextStepsType } from '@heygermany/sdk' interface NextStepsProps { joinTalentPool: boolean nextSteps: NextStepsType | null isHelper?: boolean } interface NextStepContentProps { subtitle?: string costs?: string textButton?: string onButtonClick?: () => void } function NextStepContent({ subtitle, costs, textButton, onButtonClick }: NextStepContentProps) { const theme = useMantineTheme() return ( {subtitle && ( {asI18n(subtitle)} )} {costs && ( {asI18n(costs)} )} {textButton && onButtonClick && ( )} ) } export default function NextSteps({ joinTalentPool, nextSteps, isHelper = false }: NextStepsProps) { const t = useI18n() const [drawerOpened, setDrawerOpened] = useState(false) const [drawerTitle, setDrawerTitle] = useState('') const [drawerContent, setDrawerContent] = useState< 'getHelp' | 'connect' | 'documents' | 'apply' | 'compensatory' | 'language' >('getHelp') // Handle missing next steps data if (!nextSteps) { console.error('[NextSteps] No next steps data provided from backend') return null } const openDrawer = (contentType: 'getHelp' | 'connect' | 'documents' | 'apply' | 'compensatory' | 'language', title: string) => { setDrawerTitle(title) setDrawerContent(contentType) setDrawerOpened(true) } // For helpers, only show: gethelp, connect, and conditionally german // For others, show all available steps const allSteps: ExpandableStep[] = [ { title: nextSteps.gethelp.title, icon: , content: () => ( openDrawer('getHelp', nextSteps.gethelp.title)} /> ), }, { title: nextSteps.connect.title, icon: , content: () => ( openDrawer('connect', nextSteps.connect.title)} /> ), }, ...(!isHelper && nextSteps.documents ? [{ title: nextSteps.documents.title, icon: , content: () => ( openDrawer('documents', nextSteps.documents!.title)} /> ), }] : []), ...(!isHelper && nextSteps.submit ? [{ title: nextSteps.submit.title, icon: , content: () => ( openDrawer('apply', nextSteps.submit!.title)} /> ), }] : []), ...(!isHelper && nextSteps.compensatory ? [{ title: nextSteps.compensatory.title, icon: , content: () => ( openDrawer('compensatory', nextSteps.compensatory!.title)} /> ), }] : []), ...(nextSteps.german ? [{ title: nextSteps.german.title, icon: , content: () => ( openDrawer('language', nextSteps.german!.title)} /> ), }] : []), ] const renderDrawerContent = () => { switch (drawerContent) { case 'getHelp': return case 'connect': return joinTalentPool ? : case 'documents': return ( openDrawer('getHelp', nextSteps.gethelp.title)} /> ) case 'apply': return case 'compensatory': return case 'language': return default: console.error(`[NextSteps] Unknown drawer content type: ${drawerContent}`) return ( {asI18n('Content not available')} ) } } return ( <> setDrawerOpened(false)} title={asI18n(drawerTitle)} size="lg" position="right" > {renderDrawerContent()} ) }