import * as React from "react"; import Layout from "../layouts/default"; import PropTypes from "prop-types"; import * as styles from "./index.module.scss"; import { Trans, Link } from "gatsby-plugin-react-i18next"; import { graphql } from "gatsby"; import { StaticImage } from "gatsby-plugin-image"; import anime from "animejs"; import { ArrowRight, AtSign, Camera, Github, Mail, MapPin, Phone } from "lucide-react"; import { useTranslation } from "react-i18next"; export const query = graphql` query GetMetaAndProjects($language: String) { site { siteMetadata { contactEmail contactPhone mapsLink contactTwitter contactGitHub contactMastodon contactMastodonHref } } locales: allLocale(filter: { language: { eq: $language } }) { edges { node { ns data language } } } } `; const IndexPage = (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 meta = props.data.site.siteMetadata; return (
homeHello Kevin Kandlbinder homeMe{" "} homeWebDeveloper .
{meta.contactPhone} {meta.contactEmail} homeMyLocation {meta.contactMastodon} {meta.contactGitHub}
{t("explore")}{" "} {t("myProjects")}
{t("discover")}{" "} {t("mySocials")}
{t("learn")}{" "} {t("moreAboutMe")}
{" "} homeImageCredit
); }; IndexPage.propTypes = { data: PropTypes.object.isRequired, }; export default IndexPage;