import GithubIcon from '@assets/images/social-media/github.svg'; import GitlabIcon from '@assets/images/social-media/gitlab.svg'; import { ProjectMeta } from '@ts/types/app'; import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import { slugify } from '@utils/helpers/slugify'; import useGithubApi from '@utils/hooks/useGithubApi'; import Image from 'next/image'; import { useRouter } from 'next/router'; import { useIntl } from 'react-intl'; import styles from './ProjectSummary.module.scss'; const ProjectSummary = ({ id, meta, }: { id: string; title: string; meta: ProjectMeta; }) => { const { hasCover, license, repos, technologies } = meta; const intl = useIntl(); const router = useRouter(); const locale = router.locale ? router.locale : settings.locales.defaultLocale; const { data } = useGithubApi(repos?.github ? repos.github : ''); return (
{hasCover && (
{intl.formatMessage({
)}
{data && (
{intl.formatMessage({ defaultMessage: 'Created on:', description: 'ProjectSummary: creation date label', id: 'CWi0go', })}
)} {data && (
{intl.formatMessage({ defaultMessage: 'Last updated on:', description: 'ProjectSummary: update date label', id: 'vJ+QDV', })}
)}
{intl.formatMessage({ defaultMessage: 'License:', description: 'ProjectSummary: license label', id: 'hKagVG', })}
{license}
{technologies && (
{intl.formatMessage( { defaultMessage: '{count, plural, =0 {Technologies:} one {Technology:} other {Technologies:}}', description: 'ProjectSummary: technologies list label', id: 'enwhNm', }, { count: technologies.length } )}
{technologies.map((techno) => (
{techno}
))}
)} {repos && (
{intl.formatMessage( { defaultMessage: '{count, plural, =0 {Repositories:} one {Repository:} other {Repositories:}}', description: 'ProjectSummary: repositories list label', id: 'OTTv+m', }, { count: Object.keys(repos).length } )}
{repos.github && (
Github
)} {repos.gitlab && (
Gitlab
)}
)} {data && repos && (
{intl.formatMessage({ defaultMessage: 'Popularity:', description: 'ProjectSummary: popularity label', id: 'vgMk0q', })}
{repos.github && (
⭐  {intl.formatMessage( { defaultMessage: '{starsCount, plural, =0 {0 stars on Github} one {# star on Github} other {# stars on Github}}', description: 'ProjectSummary: technologies list label', id: 'aA3hOT', }, { starsCount: data.stargazers_count } )}
)}
)}
); }; export default ProjectSummary;