import { Container, Stack, Group, Paper, ThemeIcon, Box, Grid, Flex, Text, rem, useMantineTheme, } from '@pikku/mantine/core' import { IconIdBadge2, IconWorld, IconBriefcase, IconSchool, } from '@tabler/icons-react' import { Qualification } from './Qualification' import { QualificationSectionStatusCard } from './QualificationSectionStatusCard' import { CandidateResults } from '@heygermany/sdk' import { useI18n } from '@/context/i18n-provider' import { asI18n } from '@pikku/react' interface QualificationData { title: string description: string status: string requirements: string[] steps?: string[] progress?: number } type SectionOut = { key: "education" | "license" | "language" | "additional" title: string color: "education" | "license" | "language" | "additional" icon: string qualifications: QualificationData[] } const ICONS: Record = { school: , "id-badge": , world: , briefcase: , }; const getQualificationSectionStatus = ( title: string, qualifications: QualificationData[] ) => { const statuses = qualifications.map((q) => q.status) if (statuses.includes('in-progress')) return 'in-progress' if (statuses.every((s) => s === 'completed')) return 'completed' if (statuses.every((s) => s === 'required')) return 'required' if (statuses.includes('optional')) return 'optional' return 'required' } function buildSections(candidateResults: CandidateResults, t: any): SectionOut[] { return [ { key: "education", title: t('enums.qualificationsections.education'), color: "education", icon: "school", qualifications: [candidateResults.education], }, { key: "license", title: t('enums.qualificationsections.license'), color: "license", icon: "id-badge", qualifications: [candidateResults.license], }, { key: "language", title: t('enums.qualificationsections.language'), color: "language", icon: "world", qualifications: [candidateResults.language], }, { key: "additional", title: t('enums.qualificationsections.additional'), color: "additional", icon: "briefcase", qualifications: [candidateResults.experience, candidateResults.copies, candidateResults.originals], }, ] } export const QualificationsSection: React.FunctionComponent<{ candidateResults: CandidateResults }> = ({ candidateResults }) => { const t = useI18n() const sections = buildSections(candidateResults, t) const theme = useMantineTheme() const mainSections = sections.slice(0, 3) // Education, License, Language const additionalSection = sections[3] // Additional Requirements return ( <> {sections.map((section, i) => ( ))} {mainSections.map((section, sectionIndex) => ( {ICONS[section.icon]} {asI18n(section.title)} {section.qualifications.map((qualification, qualIndex) => ( ))} ))} {ICONS[additionalSection.icon]} {asI18n(additionalSection.title)} {additionalSection.qualifications.map( (qualification, qualIndex) => ( ) )} ) }