import * as React from "react"; import Layout from "../layouts/default"; import PropTypes from "prop-types"; import * as styles from "./index.module.scss"; import * as projectStyles from "./projects.module.scss"; import { Trans, Link } from "gatsby-plugin-react-i18next"; import { graphql } from "gatsby"; import { MDXRenderer } from "gatsby-plugin-mdx"; import { GatsbyImage } from "gatsby-plugin-image"; import anime from "animejs"; import { ArrowRight } from "lucide-react"; import { useTranslation } from "react-i18next"; export const query = graphql` query GetProjectsAndSkills($language: String) { allSkillsJson(sort: { fields: type, order: ASC }) { nodes { name type href } } allProjectsJson( filter: { lang: { eq: $language }, featured: { gte: 0 } } sort: { fields: featured, order: ASC } ) { nodes { lang urlname name image { childImageSharp { gatsbyImageData( placeholder: BLURRED layout: FULL_WIDTH ) } } shortDescription featured } } locales: allLocale(filter: { language: { eq: $language } }) { edges { node { ns data language } } } file( sourceInstanceName: { eq: "textblocks" } relativeDirectory: { eq: "home/about" } name: { eq: $language } ) { id childMdx { body } name } } `; const AboutPage = (props) => { const { t } = useTranslation(); React.useEffect(() => { if (typeof window === "undefined") return; anime({ targets: [ "." + styles.profileCard + " > span", "." + styles.profileCard + " a", ], opacity: [0, 1], translateX: [100, 0], duration: 250, delay: anime.stagger(20), easing: "easeInOutCirc", }); anime({ targets: ["." + styles.profileImageDummy], translateX: [0, -3], translateY: [0, 3], duration: 250, easing: "easeInOutCirc", }); anime({ targets: ["." + styles.profileImage], translateX: [0, 4], translateY: [0, -4], duration: 250, easing: "easeInOutCirc", }); }, []); let file = props.data.file; return (
{file.childMdx.body}

about.mySkills

{props.data.allSkillsJson.nodes.map((skill) => { return skill.href ? ( {skill.name} ) : ( {skill.name} ); })}

about.featuredProjects

{props.data.allProjectsJson.nodes.map((project) => { return (
{project.name} {project.shortDescription}
); })}
about.moreProjects
about.donationCatchphrase
); }; AboutPage.propTypes = { data: PropTypes.object.isRequired, }; export default AboutPage;