import { MdLocationOn, MdMail } from 'react-icons/md'; import { AiFillGithub, AiFillInstagram, AiFillMediumSquare, } from 'react-icons/ai'; import { SiTwitter } from 'react-icons/si'; import { GrLinkedinOption } from 'react-icons/gr'; import { CgDribbble } from 'react-icons/cg'; import { RiPhoneFill } from 'react-icons/ri'; import { Fragment } from 'react'; import { FaBehanceSquare, FaBuilding, FaDev, FaFacebook, FaGlobe, FaStackOverflow, } from 'react-icons/fa'; import PropTypes from 'prop-types'; import { skeleton } from '../../helpers/utils'; const ListItem = ({ icon, title, value, link, skeleton = false }) => { return ( {icon}
{title}
{value}
); }; const isCompanyMention = (company) => { return company.startsWith('@') && !company.includes(' '); }; const companyLink = (company) => { return `https://github.com/${company.substring(1)}`; }; const Details = ({ profile, loading, social, github }) => { const renderSkeleton = () => { let array = []; for (let index = 0; index < 4; index++) { array.push( ); } return array; }; return (
{loading || !profile ? ( renderSkeleton() ) : ( {profile.location && ( } title="Based in:" value={profile.location} /> )} {profile.company && ( } title="Company:" value={profile.company} link={ isCompanyMention(profile.company.trim()) ? companyLink(profile.company.trim()) : null } /> )} } title="GitHub:" value={github.username} link={`https://github.com/${github.username}`} /> {social?.twitter && ( } title="Twitter:" value={social.twitter} link={`https://twitter.com/${social.twitter}`} /> )} {social?.linkedin && ( } title="LinkedIn:" value={social.linkedin} link={`https://www.linkedin.com/in/${social.linkedin}`} /> )} {social?.dribbble && ( } title="Dribbble:" value={social.dribbble} link={`https://dribbble.com/${social.dribbble}`} /> )} {social?.behance && ( } title="Behance:" value={social.behance} link={`https://www.behance.net/${social.behance}`} /> )} {social?.facebook && ( } title="Facebook:" value={social.facebook} link={`https://www.facebook.com/${social.facebook}`} /> )} {social?.instagram && ( } title="Instagram:" value={social.instagram} link={`https://www.instagram.com/${social.instagram}`} /> )} {social?.medium && ( } title="Medium:" value={social.medium} link={`https://medium.com/@${social.medium}`} /> )} {social?.dev && ( } title="Dev:" value={social.dev} link={`https://dev.to/${social.dev}`} /> )} {social?.stackoverflow && ( } title="Stack Overflow:" value={social.stackoverflow.split('/').slice(-1)} link={`https://stackoverflow.com/users/${social.stackoverflow}`} /> )} {social?.website && ( } title="Website:" value={social.website} link={social.website} /> )} {social?.phone && ( } title="Phone:" value={social.phone} link={`tel:${social.phone}`} /> )} {social?.email && ( } title="Email:" value={social.email} link={`mailto:${social.email}`} /> )} )}
); }; Details.propTypes = { profile: PropTypes.object, loading: PropTypes.bool.isRequired, social: PropTypes.object.isRequired, github: PropTypes.object.isRequired, }; ListItem.propTypes = { icon: PropTypes.node, title: PropTypes.node, value: PropTypes.node, link: PropTypes.string, skeleton: PropTypes.bool, }; export default Details;