import React from 'react'; import { A1SpanishChapters, FsdChapters, A1ChineseChapters } from '@freecodecamp/shared/config/chapters'; import DatabaseIcon from './icons/database'; import JavaScriptIcon from './icons/javascript'; import ReactIcon from './icons/react'; import ResponsiveDesign from './icons/responsive-design'; import FreeCodeCampIcon from './icons/freecodecamp'; import Html from './icons/html'; import Css from './icons/css'; import NodeIcon from './icons/node'; import Python from './icons/python'; import Graduation from './icons/graduation'; import { faBuilding, faComments, faCubes, faDoorOpen, faHands, faIdCard } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; const iconMap = { [FsdChapters.Welcome]: FreeCodeCampIcon, [FsdChapters.Html]: Html, [FsdChapters.Css]: Css, [FsdChapters.Javascript]: JavaScriptIcon, [FsdChapters.FrontendLibraries]: ReactIcon, [FsdChapters.RelationalDatabases]: DatabaseIcon, [FsdChapters.BackendJavascript]: NodeIcon, [FsdChapters.Python]: Python, [FsdChapters.Career]: Graduation, [FsdChapters.RwdExam]: Graduation, [FsdChapters.JsExam]: Graduation, [FsdChapters.Fed]: ReactIcon, [FsdChapters.FedExam]: Graduation, [FsdChapters.PythonExam]: Graduation, [FsdChapters.RdbExam]: Graduation, [FsdChapters.Bed]: NodeIcon, [FsdChapters.BedExam]: Graduation, [FsdChapters.FsdExam]: Graduation, [A1ChineseChapters.zhA1Welcome]: faDoorOpen, [A1ChineseChapters.zhA1PinYin]: faCubes, [A1ChineseChapters.zhA1Greetings]: faComments, [A1ChineseChapters.zhA1GreetingsLegacy]: faComments, [A1ChineseChapters.zhA1NumbersAndPersonalInformation]: faIdCard, [A1ChineseChapters.zhA1Family]: faIdCard, [A1ChineseChapters.zhA1Expressing]: faHands, [A1SpanishChapters.esA1Welcome]: faDoorOpen, [A1SpanishChapters.esA1Fundamentals]: faCubes, [A1SpanishChapters.esA1Greetings]: faComments, [A1SpanishChapters.esA1Details]: faIdCard, [A1SpanishChapters.esA1Describing]: faBuilding }; type ChapterIconProps = { chapter: FsdChapters; } & React.SVGProps; export function ChapterIcon(props: ChapterIconProps): JSX.Element { const { chapter, ...iconProps } = props; const Icon = iconMap[chapter] ?? ResponsiveDesign; if (typeof Icon === 'object') { return ; } return ; }