Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 20 additions & 19 deletions src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,33 @@ export default function App() {
const [hasRendered, setHasRendered] = useState(sections.map(() => false));

const sectionElements = [
<Presentation key={0}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={0}/>,
<Projects key={1}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={1}/>,
<Experience key={2}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={2}/>,
<Contact key={3}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={3}/>,
<Presentation key={0}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={0} />,
<Projects key={1}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={1} />,
<Experience key={2}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={2} />,
<Contact key={3}
hasRendered={hasRendered}
setHasRendered={setHasRendered}
sectionIndex={3} />,
];

return (
<Background
sections={sections}
currentSection={currentSection}
setCurrentSection={setCurrentSection}>
sections={sections}
currentSection={currentSection}
setCurrentSection={setCurrentSection}>
{/* Sections */}
<AnimatePresence mode="wait">
<motion.div
className={`md:h-full md:w-full md:flex md:items-center`}
key={currentSection}
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
Expand Down
Binary file added src/assets/images/portfolio.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/questai.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/store.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/wip.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/components/background/Background.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const Background = ({ children, sections, currentSection, setCurrentSection }) =
opacity: 1,
transition: {
delay: delay,
}
},
}
},
}
Expand Down Expand Up @@ -106,7 +106,7 @@ const Background = ({ children, sections, currentSection, setCurrentSection }) =
</motion.div>

{/* Content */}
<motion.div className={`relative px-16 py-4 md:content-start md:h-5/6 md:col-span-11 md:px-0 md:py-0`}
<motion.div className={`px-16 py-4 md:content-start md:h-5/6 md:w-full md:col-span-11 md:px-0 md:py-0`}
drag="x"
dragConstraints={{ left: 0, right: 0 }}
dragElastic={false}
Expand Down
2 changes: 1 addition & 1 deletion src/components/contact/Contact.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ function Contact({ hasRendered, setHasRendered, sectionIndex }) {

return (
<>
<div className="md:h-full">
<div className="md:h-full md:w-full">
<h1 className="mb-8 col-span-2 text-5xl font-semibold text-center md:py-8">More about me?</h1>
<div className="md:flex md:flex-row md:gap-12 lg:gap-24">
<section className="flex-1">
Expand Down
2 changes: 1 addition & 1 deletion src/components/experience/Experience.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function Experience({ hasRendered, setHasRendered, sectionIndex }) {
}

return (
<div className="md:px-16 md:py-4 md:flex md:justify-center md:h-5/6">
<div className="md:px-16 md:py-4 md:flex md:justify-center md:h-full md:w-full">
<section>
<motion.h1 className="text-8xl text-center font-bold mb-4"
variants={renderVariants}
Expand Down
10 changes: 4 additions & 6 deletions src/components/presentation/Presentation.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function Presentation({ hasRendered, setHasRendered, sectionIndex }) {
}
},
}

} else {
renderVariants = {
hiddenUp: { opacity: 0 },
Expand All @@ -38,9 +38,7 @@ function Presentation({ hasRendered, setHasRendered, sectionIndex }) {
}

return (
<>
{/* TO-DO: You should search something better for this... */}
<div className="md:h-16" />
<div>
{/* Content */}
<motion.div className="md:grid md:grid-cols-11 md:gap-2"
key={"presentation"}>
Expand All @@ -52,7 +50,7 @@ function Presentation({ hasRendered, setHasRendered, sectionIndex }) {
animate="visible"
custom={2}
>I’m Sebastian Idrobo</motion.h1>
<motion.div className=""
<motion.div className="md:overflow-y-auto md:max-h-80"
variants={renderVariants}
initial="hiddenUp"
animate="visible"
Expand Down Expand Up @@ -89,7 +87,7 @@ function Presentation({ hasRendered, setHasRendered, sectionIndex }) {
custom={5}>
<ProgrammingIcons></ProgrammingIcons>
</motion.div>
</>
</div>
)
}

Expand Down
46 changes: 46 additions & 0 deletions src/components/projects/Project.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import React, { useState } from 'react';
import { motion } from "framer-motion";

function Project(props) {
const { title, description, img, link } = props;
const [isHovered, setIsHovered] = useState(false);

const handleHoverStart = () => { setIsHovered(true) }
const handleHoverEnd = () => { setIsHovered(false) }

return (
<motion.div
className="relative flex items-center h-full w-full rounded-3xl overflow-hidden bg-zinc-100 md:max-h-60"
onHoverStart={handleHoverStart}
onHoverEnd={handleHoverEnd}
onTap={() => setIsHovered(!isHovered)}
>
<div className='absolute inset-0'>
<img src={img} alt="Project" className="w-full h-full object-cover opacity-10" />
</div>

<motion.div
className="p-4 w-full"
initial={{ scale: 0 }}
animate={{ scale: isHovered ? 1 : 0 }}
transition={{ type: "spring", stiffness: 200, damping: 30 }}
>


<h2 className="text-center text-2xl font-bold mb-2">{title}</h2>
<p className="text-center mb-4">
{description}
</p>
<div className="flex justify-center">
<a href={link}>
<button className="bg-transparent hover:bg-purple-500 text-purple-700 font-semibold hover:text-white py-2 px-4 border border-purple-500 hover:border-transparent rounded">
Visit
</button>
</a>
</div>
</motion.div>
</motion.div>
);
}

export default Project;
71 changes: 24 additions & 47 deletions src/components/projects/Projects.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { useEffect } from "react";
import { motion } from "framer-motion";
import Project from "./Project.jsx";
import questAIImage from '../../assets/images/questai.jpg';
import storeImage from '../../assets/images/store.jpg';
import portfolioImage from '../../assets/images/portfolio.jpg';
import wipImage from '../../assets/images/wip.png';

function Projects({ hasRendered, setHasRendered, sectionIndex }) {

Expand Down Expand Up @@ -36,52 +40,25 @@ function Projects({ hasRendered, setHasRendered, sectionIndex }) {
}

return (
<div className="md:px-16 md:py-4 md:flex md:justify-center md:h-5/6">
<section>
<motion.h1 className="text-8xl text-center font-bold mb-4"
variants={renderVariants}
initial="hiddenUp"
animate="visible"
custom={1}>WIP</motion.h1>
<motion.p className="text-xl text-center"
variants={renderVariants}
initial="hiddenUp"
animate="visible"
custom={2}>This section is still under construction! Sorry for the inconvenience</motion.p>
<motion.div className="flex justify-center items-center"
variants={renderVariants}
initial="hiddenUp"
animate="visible"
custom={3}>
<pre className="text-[8px] w-auto justify-center md:text-[12px]">
{`
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⡷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠋⠈⠻⣮⣳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⡿⠋⠀⠀⠀⠀⠙⣿⣿⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⡿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠿⠿⣿⣷⣶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠻⠿⣿⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣀⣠⣤⣤⣀⡀⠀⠀⣀⣴⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣷⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣄⠀⠀
⢀⣤⣾⡿⠟⠛⠛⢿⣿⣶⣾⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣷⣦⣀⣀⣤⣶⣿⡿⠿⢿⣿⡀⠀
⣿⣿⠏⠀⢰⡆⠀⠀⠉⢿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⢿⡿⠟⠋⠁⠀⠀⢸⣿⠇⠀
⣿⡟⠀⣀⠈⣀⡀⠒⠃⠀⠙⣿⡆⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠇⠀
⣿⡇⠀⠛⢠⡋⢙⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀
⣿⣧⠀⠀⠀⠓⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠋⠀⠀⢸⣧⣤⣤⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡿⠀⠀
⣿⣿⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠻⣷⣶⣶⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⠁⠀⠀
⠈⠛⠻⠿⢿⣿⣷⣶⣦⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⡏⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⠿⢿⣿⣷⣶⣦⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⡄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠻⠿⢿⣿⣷⣶⣦⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⡄⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠿⠿⣿⣷⣶⣶⣤⣤⣀⡀⠀⠀⠀⢀⣴⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡿⣄
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠿⠿⣿⣷⣶⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣹
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⢸⣧
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣆⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣶⣾⣿⣿⣿⣿⣤⣄⣀⡀⠀⠀⠀⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣻⣷⣶⣾⣿⣿⡿⢯⣛⣛⡋⠁⠀⠀⠉⠙⠛⠛⠿⣿⣿⡷⣶⣿
`}
</pre>
</motion.div>
<div className="h-56 md:h-0" />
<p className="text-sm text-center md:h-0 md:text-[0px]">(ノ◕ヮ◕)ノ*:・゚✧ ✧゚・: *ヽ(◕ヮ◕ヽ)</p>
{/*https://emojicombos.com/cute-ascii-art */}
</section>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6 lg:pt-6 lg:gap-8 md:auto-rows-fr md:grid-cols-2 md:gap-4 md:h-full md:w-full md:px-16 md:pb-16 md:items-center">
<Project
title={"QuestAI"}
description={"Website where you can record your interviews, save them to text and have assistance with the help of AI"}
img={questAIImage}
link={"https://github.com/Seb0927/QuestAI"} />
<Project
title={"3DStore"}
description={"Website store for 3D Items, with 3D animation on items and CRUD for items and orders"}
img={storeImage}
link={"https://github.com/Seb0927/3DStore"}/>
<Project title={"My Portfolio"}
description={"Web portfolio for showing myself and with animation, using Motion library!"}
img={portfolioImage}
link={"https://github.com/Seb0927/seb0927.github.io"}/>
<Project title={"WIP"}
description={"I hope to have more projects to display here!"}
img={wipImage}
link={"https://seb0927.github.io/"}/>
</div>
)
}
Expand Down