refactor: make superblock icon a React component (#51901)

This commit is contained in:
Muhammed Mustafa
2023-10-11 13:30:11 +03:00
committed by GitHub
parent 42414566b8
commit 3657ef24d5
3 changed files with 12 additions and 12 deletions
@@ -40,14 +40,14 @@ const iconMap = {
[SuperBlocks.UpcomingPython]: PythonIcon
};
const generateIconComponent = (
superBlock: SuperBlocks,
className: string
): JSX.Element => {
type SuperBlockIconProps = {
superBlock: SuperBlocks;
} & React.SVGProps<SVGSVGElement>;
export function SuperBlockIcon(props: SuperBlockIconProps): JSX.Element {
const { superBlock, className } = props;
// fallback in case super block doesn't exist and for tests
const Icon = iconMap[superBlock] ? iconMap[superBlock] : ResponsiveDesign;
return <Icon className={className} />;
};
export { generateIconComponent };
return <Icon className={className} {...props} />;
}
+2 -2
View File
@@ -8,7 +8,7 @@ import {
getFirstNotAuditedSuperBlock,
superBlockOrder
} from '../../../../shared/config/superblocks';
import { generateIconComponent } from '../../assets/icons';
import { SuperBlockIcon } from '../../assets/icons/superblock-icon';
import LinkButton from '../../assets/icons/link-button';
import { Link, Spacer } from '../helpers';
import { getSuperBlockTitleForMap } from '../../utils/superblock-map-titles';
@@ -77,7 +77,7 @@ function MapLi({
>
<Link className='btn link-btn btn-lg' to={`/learn/${superBlock}/`}>
<div style={linkSpacingStyle}>
{generateIconComponent(superBlock, 'map-icon')}
<SuperBlockIcon className='map-icon' superBlock={superBlock} />
{getSuperBlockTitleForMap(superBlock)}
</div>
{landing && <LinkButton />}
@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { generateIconComponent } from '../../../assets/icons';
import { SuperBlockIcon } from '../../../assets/icons/superblock-icon';
import { Spacer } from '../../../components/helpers';
interface SuperBlockIntroProps {
@@ -29,7 +29,7 @@ function SuperBlockIntro(props: SuperBlockIntroProps): JSX.Element {
{i18nSuperBlock}
</h1>
<Spacer size='medium' />
{generateIconComponent(superBlock, 'cert-header-icon')}
<SuperBlockIcon className='cert-header-icon' superBlock={superBlock} />
<Spacer size='medium' />
{superBlockIntroText.map((str, i) => (
<p key={i}>{str}</p>