feat: stricter lint, check pipelines, docker-containers, pnpm

This commit is contained in:
2026-02-22 17:48:51 +00:00
parent 40ca6ef94a
commit b697ad823a
50 changed files with 4976 additions and 5431 deletions

View File

@@ -0,0 +1,17 @@
import styles from "../../styling/intro.module.scss";
import TopBar from "./TopBar";
import IntroContent from "./IntroContent";
import { getGreeting } from "./helpers";
const Intro = (): JSX.Element => {
const greeting = getGreeting();
return (
<section className={styles.section}>
<TopBar/>
<IntroContent greeting={greeting}/>
</section>
);
};
export default Intro;

View File

@@ -0,0 +1,39 @@
import Image from "next/image";
import styles from "../../styling/intro.module.scss";
import profilePic from "../../../../public/portfolio/profile.png";
interface IIntroContentProps {
greeting: string;
}
const IntroContent = ({ greeting }: IIntroContentProps): JSX.Element => {
return (
<div className={styles.mainContent}>
<div className={styles.text} data-aos={"fade-in"} data-aos-duration={"500"}>
<div className={styles.larger}>
<span className={styles.greeting}>
{greeting}
</span>
<br/>
I am
<b> Patryk Kuchta, </b>
an aspiring
<br/>
<b>Artificial Intelligence Scientist</b>.
</div>
<span data-aos={"fade-in"} data-aos-offset={"200"}>
<i>and yes, the greeting is synced to your time.</i>
</span>
</div>
<div className={styles.profileContainer}>
<Image
src={profilePic}
alt={"Frontal image showing Patryk Kuchta"}
fill={true}
/>
</div>
</div>
);
};
export default IntroContent;

View File

@@ -0,0 +1,26 @@
import Image from "next/image";
import styles from "../../styling/intro.module.scss";
import logo from "../../../../public/portfolio/logo.svg";
const TopBar = (): JSX.Element => {
return (
<header className={styles.topBar} data-aos={"zoom-in-down"} data-aos-duration={"500"}>
<div className={styles.row}>
<div className={styles.logoContainer}>
<Image src={logo} alt={"Kuchta logo"} fill={true}/>
</div>
<a href={"#achievements"}>Achievements</a>
<a href={"#experience"}>Experience</a>
<a href={"#projects"}>Projects</a>
<a href={"#skills"}>Skills</a>
</div>
<div className={styles.left}>
<a href={"mailto: patrick@kuchta.uk"}>patrick@kuchta.uk</a>
<span>/</span>
<a href={"mailto: patryk@kuchta.uk"}>patryk@kuchta.uk</a>
</div>
</header>
);
};
export default TopBar;

View File

@@ -0,0 +1,10 @@
export const getGreeting = (): string => {
const hour = new Date().getHours();
if (hour > 4 && hour < 12) {
return "Good Morning!";
} else if (hour < 18) {
return "Good Afternoon!";
} else {
return "Good Evening!";
}
};

View File

@@ -0,0 +1 @@
export { default } from "./Intro";