summaryrefslogtreecommitdiffstats
path: root/src/components/Widget/SocialMedia/SocialMedia.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/Widget/SocialMedia/SocialMedia.tsx')
-rw-r--r--src/components/Widget/SocialMedia/SocialMedia.tsx72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/components/Widget/SocialMedia/SocialMedia.tsx b/src/components/Widget/SocialMedia/SocialMedia.tsx
new file mode 100644
index 0000000..9ca0627
--- /dev/null
+++ b/src/components/Widget/SocialMedia/SocialMedia.tsx
@@ -0,0 +1,72 @@
+import { socialWebsites } from '@config/social-media';
+import GithubIcon from '@assets/images/social-media/github.svg';
+import GitlabIcon from '@assets/images/social-media/gitlab.svg';
+import LinkedInIcon from '@assets/images/social-media/linkedin.svg';
+import TwitterIcon from '@assets/images/social-media/twitter.svg';
+import styles from './SocialMedia.module.scss';
+
+const SocialMedia = ({
+ title,
+ github = false,
+ gitlab = false,
+ linkedin = false,
+ twitter = false,
+}: {
+ title: string;
+ github?: boolean;
+ gitlab?: boolean;
+ linkedin?: boolean;
+ twitter?: boolean;
+}) => {
+ const getIcon = (id: string) => {
+ switch (id) {
+ case 'github':
+ return <GithubIcon />;
+ case 'gitlab':
+ return <GitlabIcon />;
+ case 'linkedin':
+ return <LinkedInIcon />;
+ case 'twitter':
+ return <TwitterIcon />;
+ default:
+ break;
+ }
+ };
+
+ const shouldDisplayLink = (id: string) => {
+ switch (id) {
+ case 'github':
+ return github;
+ case 'gitlab':
+ return gitlab;
+ case 'linkedin':
+ return linkedin;
+ case 'twitter':
+ return twitter;
+ default:
+ break;
+ }
+ };
+
+ const items = socialWebsites.map((website) => {
+ return shouldDisplayLink(website.id) ? (
+ <li key={website.id}>
+ <a href={website.url} className={styles.link}>
+ {getIcon(website.id)}
+ <span className="screen-reader-text">{website.name}</span>
+ </a>
+ </li>
+ ) : (
+ ''
+ );
+ });
+
+ return (
+ <div>
+ <h2>{title}</h2>
+ <ul className={styles.list}>{items}</ul>
+ </div>
+ );
+};
+
+export default SocialMedia;