import { Fragment, useContext } from "react"; import { ga, languageColor, skeleton } from "../helpers/utils"; import { AiOutlineStar, AiOutlineFork } from 'react-icons/ai'; import config from "../config"; import PropTypes from 'prop-types'; import { LoadingContext } from "../contexts/LoadingContext"; const Project = (props) => { const [loading] = useContext(LoadingContext); const renderSkeleton = () => { let array = []; for (let index = 0; index < config.github.limit; index++) { array.push((
{skeleton({ width: 'w-32', height: 'h-8' })}
{skeleton({ width: 'w-full', height: 'h-4', className: 'mb-2' })} {skeleton({ width: 'w-full', height: 'h-4' })}
{skeleton({ width: 'w-12', height: 'h-4' })} {skeleton({ width: 'w-12', height: 'h-4' })}
{skeleton({ width: 'w-12', height: 'h-4' })}
)) } return array; } const renderProjects = () => { return props.repo.map((item, index) => (
{ try { if (config.googleAnalytics?.id) { ga.event({ action: "Click project", params: { project: item.name } }); } } catch (error) { console.error(error); } window.open(item.html_url, '_blank') }} >
{item.name}

{item.description}

{item.stargazers_count} {item.forks_count}
{item.language}
)); } return (
  • { loading ? skeleton({ width: 'w-28', height: 'h-8' }) : ( My Projects ) }
    { loading ? skeleton({ width: 'w-10', height: 'h-5' }) : ( See All ) }
{(loading || !props.repo) ? renderSkeleton() : renderProjects()}
) } Project.propTypes = { repo: PropTypes.array } export default Project;