import { useI18n } from '@/context/i18n-provider' import { asI18n } from '@pikku/react' import { LanguageLevels } from '@heygermany/sdk' import { Stack, Title, Text, Box, Paper, Progress, List, ThemeIcon, Flex, rem, useMantineTheme, } from '@pikku/mantine/core' import { IconCircleCheck, IconExclamationCircle, IconClock, IconInfoCircle, IconCircle, } from '@tabler/icons-react' interface QualificationProps { title: string description: string status: string requirements: string[] steps?: string[] progress?: number fillHeight?: boolean } const getStatusColor = (status: string) => { switch (status) { case 'completed': return 'green' case 'required': return 'red' case 'in-progress': return 'orange' case 'optional': return 'blue' default: return 'gray' } } const getStatusIcon = (status: string) => { const iconProps = { size: 28, color: getStatusColor(status) } switch (status) { case 'completed': return case 'required': return case 'in-progress': return case 'optional': return default: return } } export const Qualification: React.FunctionComponent = ({ title, description, status, requirements, steps, progress, fillHeight = true, }) => { const t = useI18n() const theme = useMantineTheme() function translateLevels(req: string): string { for (const key of Object.keys(LanguageLevels)) { req = req.replace(key, t(`enums.languagelevel.${key}`.toLowerCase() as any)) } return req } return ( {getStatusIcon(status)} {asI18n(title)} {t(`enums.documentstatus.${status}` as any)} {!isNaN(progress!) && ( {progress}% )} {asI18n(description)} {requirements && ( {asI18n(`${t('jobs.qualification.requirements')}:`)} {requirements.map((req, reqIndex) => ( {asI18n(translateLevels(req))} ))} )} {(steps?.length && steps.length > 0) ? ( {asI18n(`${t('jobs.qualification.nextsteps')}:`)} {steps.map((step, stepIndex) => ( {asI18n(translateLevels(step))} ))} ) : null} ) }