heika/components/Icon.tsx
2023-05-28 07:56:34 +02:00

80 lines
2.1 KiB
TypeScript

export type Icon =
| 'twitter'
| 'bandcamp'
| 'discord'
| 'envelope'
| 'soundcloud'
| 'teespring'
| 'twitch'
import styles from "../styles/Icons.module.sass"
import {
FaBandcamp,
FaDiscord,
FaEnvelope,
FaSoundcloud,
FaTwitter,
FaTwitch
} from 'react-icons/fa'
import { SiSpringCreators } from 'react-icons/si'
const Icon = ({
icon,
className,
}: {
icon: Icon | string
className?: string
}) => {
const size = '3rem'
switch (icon) {
case 'twitter':
return (
<FaTwitter
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'bandcamp':
return (
<FaBandcamp
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'twitch':
return (
<FaTwitch
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'discord':
return (
<FaDiscord
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'envelope':
return (
<FaEnvelope
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'soundcloud':
return (
<FaSoundcloud
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
case 'teespring':
return (
<SiSpringCreators
className={[styles.icon, styles[className]].join(' ')}
size={size}
/>
)
}
}
export default Icon