-
-
Save adrianhajdin/7bc0603ee0b1bd2872b80a62c24b5e5f to your computer and use it in GitHub Desktop.
3D Portfolio Gists
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&family=Work+Sans:wght@100;200;300;400;500;600;700;800;900&display=swap"); | |
@tailwind base; | |
@tailwind components; | |
@tailwind utilities; | |
:root { | |
--blue-rgb: 237 245 255; | |
--green-rgb: 125 161 35; | |
} | |
body { | |
font-family: "Work Sans", sans-serif; | |
} | |
body:has(.card[data-color="blue"]:hover) { | |
background-color: rgb(var(--blue-rgb) / 25%); | |
} | |
body:has(.card[data-color="green"]:hover) { | |
background-color: rgb(var(--green-rgb) / 25%); | |
} | |
@layer utilities { | |
.max-container { | |
@apply max-w-5xl mx-auto sm:p-16 pb-12 !pt-[126px] px-8 min-h-[calc(100vh-80px)]; | |
} | |
.head-text { | |
@apply sm:text-5xl text-3xl font-semibold sm:leading-snug font-poppins; | |
} | |
.subhead-text { | |
@apply font-semibold sm:text-3xl text-xl relative font-poppins; | |
} | |
.blue-gradient_text { | |
@apply bg-gradient-to-r from-[#00c6ff] to-[#0072ff] bg-clip-text text-transparent; | |
} | |
.input { | |
@apply bg-white border border-gray-200 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 mt-2.5 font-normal shadow-card; | |
} | |
.textarea { | |
@apply block p-2.5 w-full text-sm text-gray-900 bg-white rounded-lg border border-gray-200 focus:ring-blue-500 focus:border-blue-500 mt-2.5 font-normal shadow-card; | |
} | |
.btn { | |
@apply text-white bg-gradient-to-r from-[#00c6ff] to-[#0072ff] focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center; | |
} | |
.header { | |
@apply flex justify-between items-center sm:px-16 px-8 py-4 max-w-5xl mx-auto absolute top-0 bg-transparent z-10 right-0 left-0; | |
} | |
.footer { | |
@apply max-w-5xl mx-auto sm:px-16 pb-6 px-8 flex flex-col gap-7; | |
} | |
.footer-container { | |
@apply flex flex-wrap gap-7 items-center justify-between; | |
} | |
.info-box { | |
@apply mx-5 relative flex text-white flex-col gap-3 max-w-2xl neo-brutalism-blue pt-4 pb-12 px-8; | |
} | |
.neo-btn { | |
@apply py-3 px-6 rounded-lg text-blue-500 text-center font-semibold sm:w-1/2 w-[90%] -bottom-5 absolute mx-auto right-0 left-0 flex justify-center items-center gap-3; | |
} | |
.cta { | |
@apply w-full flex items-center md:flex-row flex-col sm:mt-16 mt-8 gap-7; | |
} | |
.cta-text { | |
@apply text-black-500 font-extrabold flex-1 text-3xl max-md:text-center; | |
} | |
} | |
.glassmorphism { | |
background: rgba(8, 116, 239, 0.07); | |
backdrop-filter: blur(10px); | |
-webkit-backdrop-filter: blur(10px); | |
border-radius: 10px; | |
border: 1px solid rgba(255, 255, 255, 0.18); | |
} | |
.logo { | |
border-radius: 8.889px; | |
background: #fff; | |
box-shadow: 0px 10px 35px -4px rgba(67, 83, 255, 0.15), | |
0px 1.5px 4px -1px rgba(67, 83, 255, 0.2); | |
} | |
.block-container { | |
position: relative; | |
transition: 250ms; | |
perspective: 500px; | |
} | |
.block-container .btn-back { | |
position: absolute; | |
inset: 0; | |
z-index: -1; | |
width: inherit; | |
height: inherit; | |
transition: 250ms; | |
transform-style: preserve-3d; | |
transform-origin: bottom right; | |
transform: rotateZ(15deg); | |
will-change: transform; | |
box-shadow: 16px 0 40px #e4e4e4; | |
} | |
.block-container .btn-back-red { | |
background: linear-gradient(135deg, #ff4b1f -20%, #ff9068 120%); | |
} | |
.block-container .btn-back-green { | |
background: linear-gradient(135deg, #adfda2 -20%, #11d3f3 120%); | |
} | |
.block-container .btn-back-yellow { | |
background: linear-gradient(135deg, #f7971e -20%, #ffd200 120%); | |
} | |
.block-container .btn-back-blue { | |
background: linear-gradient(135deg, #0061ff -20%, #60efff 120%); | |
} | |
.block-container .btn-back-orange { | |
background: linear-gradient(135deg, #ff0f7b -20%, #f89b29 120%); | |
} | |
.block-container .btn-back-pink { | |
background: linear-gradient(135deg, #e81cff -20%, #40c9ff 120%); | |
} | |
.block-container .btn-back-black { | |
background: linear-gradient(135deg, #0a1647 -20%, #e4e7e4 120%); | |
} | |
.block-container .btn-front { | |
position: absolute; | |
inset: 0; | |
z-index: 1; | |
width: inherit; | |
height: inherit; | |
background-color: #ffffff33; | |
-webkit-backdrop-filter: blur(20px); | |
backdrop-filter: blur(20px); | |
transition: 250ms; | |
transform-style: preserve-3d; | |
transform-origin: top left; | |
overflow: hidden; | |
} | |
.block-container:hover > .btn-back { | |
transform: translateZ(20px) rotateZ(15deg) rotateX(-20deg) rotateY(-20deg); | |
} | |
.block-container:hover > .btn-front { | |
transform: translateZ(80px) translateY(-5px) rotateX(15deg) rotateY(15deg); | |
} | |
/* Neo Brutalism */ | |
.neo-brutalism-blue { | |
background: #2b77e7; | |
position: relative; | |
border-radius: 10px; | |
border: #2b77e7; | |
box-shadow: 0.6vmin 0.6vmin #336cc1, 1vmin 1vmin #0092db, 1vmin 1vmin #0092db, | |
0.65vmin 1vmin #0092db, 1vmin 0.65vmin #0092db; | |
} | |
.neo-brutalism-white { | |
background: #fff; | |
border: #fff; | |
box-shadow: 0.6vmin 0.6vmin #fff, 1vmin 1vmin #d2e4ff, 1vmin 1vmin #d2e4ff, | |
0.65vmin 1vmin #d2e4ff, 1vmin 0.65vmin #d2e4ff; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { meta, shopify, starbucks, tesla } from "../assets/images"; | |
import { | |
car, | |
contact, | |
css, | |
estate, | |
express, | |
git, | |
github, | |
html, | |
javascript, | |
linkedin, | |
mongodb, | |
motion, | |
mui, | |
nextjs, | |
nodejs, | |
pricewise, | |
react, | |
redux, | |
sass, | |
snapgram, | |
summiz, | |
tailwindcss, | |
threads, | |
typescript | |
} from "../assets/icons"; | |
export const skills = [ | |
{ | |
imageUrl: css, | |
name: "CSS", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: express, | |
name: "Express", | |
type: "Backend", | |
}, | |
{ | |
imageUrl: git, | |
name: "Git", | |
type: "Version Control", | |
}, | |
{ | |
imageUrl: github, | |
name: "GitHub", | |
type: "Version Control", | |
}, | |
{ | |
imageUrl: html, | |
name: "HTML", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: javascript, | |
name: "JavaScript", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: mongodb, | |
name: "MongoDB", | |
type: "Database", | |
}, | |
{ | |
imageUrl: motion, | |
name: "Motion", | |
type: "Animation", | |
}, | |
{ | |
imageUrl: mui, | |
name: "Material-UI", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: nextjs, | |
name: "Next.js", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: nodejs, | |
name: "Node.js", | |
type: "Backend", | |
}, | |
{ | |
imageUrl: react, | |
name: "React", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: redux, | |
name: "Redux", | |
type: "State Management", | |
}, | |
{ | |
imageUrl: sass, | |
name: "Sass", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: tailwindcss, | |
name: "Tailwind CSS", | |
type: "Frontend", | |
}, | |
{ | |
imageUrl: typescript, | |
name: "TypeScript", | |
type: "Frontend", | |
} | |
]; | |
export const experiences = [ | |
{ | |
title: "React.js Developer", | |
company_name: "Starbucks", | |
icon: starbucks, | |
iconBg: "#accbe1", | |
date: "March 2020 - April 2021", | |
points: [ | |
"Developing and maintaining web applications using React.js and other related technologies.", | |
"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.", | |
"Implementing responsive design and ensuring cross-browser compatibility.", | |
"Participating in code reviews and providing constructive feedback to other developers.", | |
], | |
}, | |
{ | |
title: "React Native Developer", | |
company_name: "Tesla", | |
icon: tesla, | |
iconBg: "#fbc3bc", | |
date: "Jan 2021 - Feb 2022", | |
points: [ | |
"Developing and maintaining web applications using React.js and other related technologies.", | |
"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.", | |
"Implementing responsive design and ensuring cross-browser compatibility.", | |
"Participating in code reviews and providing constructive feedback to other developers.", | |
], | |
}, | |
{ | |
title: "Web Developer", | |
company_name: "Shopify", | |
icon: shopify, | |
iconBg: "#b7e4c7", | |
date: "Jan 2022 - Jan 2023", | |
points: [ | |
"Developing and maintaining web applications using React.js and other related technologies.", | |
"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.", | |
"Implementing responsive design and ensuring cross-browser compatibility.", | |
"Participating in code reviews and providing constructive feedback to other developers.", | |
], | |
}, | |
{ | |
title: "Full stack Developer", | |
company_name: "Meta", | |
icon: meta, | |
iconBg: "#a2d2ff", | |
date: "Jan 2023 - Present", | |
points: [ | |
"Developing and maintaining web applications using React.js and other related technologies.", | |
"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.", | |
"Implementing responsive design and ensuring cross-browser compatibility.", | |
"Participating in code reviews and providing constructive feedback to other developers.", | |
], | |
}, | |
]; | |
export const socialLinks = [ | |
{ | |
name: 'Contact', | |
iconUrl: contact, | |
link: '/contact', | |
}, | |
{ | |
name: 'GitHub', | |
iconUrl: github, | |
link: 'https://github.com/YourGitHubUsername', | |
}, | |
{ | |
name: 'LinkedIn', | |
iconUrl: linkedin, | |
link: 'https://www.linkedin.com/in/YourLinkedInUsername', | |
} | |
]; | |
export const projects = [ | |
{ | |
iconUrl: pricewise, | |
theme: 'btn-back-red', | |
name: 'Amazon Price Tracker', | |
description: 'Developed a web application that tracks and notifies users of price changes for products on Amazon, helping users find the best deals.', | |
link: 'https://github.com/adrianhajdin/pricewise', | |
}, | |
{ | |
iconUrl: threads, | |
theme: 'btn-back-green', | |
name: 'Full Stack Threads Clone', | |
description: 'Created a full-stack replica of the popular discussion platform "Threads," enabling users to post and engage in threaded conversations.', | |
link: 'https://github.com/adrianhajdin/threads', | |
}, | |
{ | |
iconUrl: car, | |
theme: 'btn-back-blue', | |
name: 'Car Finding App', | |
description: 'Designed and built a mobile app for finding and comparing cars on the market, streamlining the car-buying process.', | |
link: 'https://github.com/adrianhajdin/project_next13_car_showcase', | |
}, | |
{ | |
iconUrl: snapgram, | |
theme: 'btn-back-pink', | |
name: 'Full Stack Instagram Clone', | |
description: 'Built a complete clone of Instagram, allowing users to share photos and connect with friends in a familiar social media environment.', | |
link: 'https://github.com/adrianhajdin/social_media_app', | |
}, | |
{ | |
iconUrl: estate, | |
theme: 'btn-back-black', | |
name: 'Real-Estate Application', | |
description: 'Developed a web application for real estate listings, facilitating property searches and connecting buyers with sellers.', | |
link: 'https://github.com/adrianhajdin/projects_realestate', | |
}, | |
{ | |
iconUrl: summiz, | |
theme: 'btn-back-yellow', | |
name: 'AI Summarizer Application', | |
description: 'App that leverages AI to automatically generate concise & informative summaries from lengthy text content, or blogs.', | |
link: 'https://github.com/adrianhajdin/project_ai_summarizer', | |
} | |
]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const normalizedRotation = | |
((rotation % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI); | |
// Set the current stage based on the island's orientation | |
switch (true) { | |
case normalizedRotation >= 5.45 && normalizedRotation <= 5.85: | |
setCurrentStage(4); | |
break; | |
case normalizedRotation >= 0.85 && normalizedRotation <= 1.3: | |
setCurrentStage(3); | |
break; | |
case normalizedRotation >= 2.4 && normalizedRotation <= 2.6: | |
setCurrentStage(2); | |
break; | |
case normalizedRotation >= 4.25 && normalizedRotation <= 4.75: | |
setCurrentStage(1); | |
break; | |
default: | |
setCurrentStage(null); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** @type {import('tailwindcss').Config} */ | |
export default { | |
content: [ | |
"./index.html", | |
"./src/**/*.{js,ts,jsx,tsx}", | |
], | |
theme: { | |
extend: { | |
colors: { | |
gray: { | |
200: "#D5DAE1" | |
}, | |
black: { | |
DEFAULT: "#000", | |
500: "#1D2235" | |
}, | |
blue: { | |
500: "#2b77e7" | |
} | |
}, | |
fontFamily: { | |
worksans: ["Work Sans", "sans-serif"], | |
poppins: ['Poppins', "sans-serif"] | |
}, | |
boxShadow: { | |
card: '0px 1px 2px 0px rgba(0, 0, 0, 0.05)' | |
} | |
}, | |
}, | |
plugins: [], | |
} |
/*
Auto-generated by: https://github.com/pmndrs/gltfjsx
Author: nimzu (https://sketchfab.com/nimzuk)
License: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
Source: https://sketchfab.com/3d-models/foxs-islands-163b68e09fcc47618450150be7785907
Title: Fox's islands
*/
import {a} from '@react-spring/three';
import React, { useRef, useEffect } from 'react';
import { useGLTF } from '@react-three/drei';
import { useFrame, useThree } from '@react-three/fiber';
import islandScene from '../assets/3d/island.glb';
const Island = (props) => {
const isLandRef = useRef();
const { nodes, materials } = useGLTF(islandScene)
return (
<a.group ref={isLandRef}{...props} >
</a.group>
)
}
export default Island;
my 3d models not showing
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello I am getting this error when I click on the 3D object to move it. As soon as I click and drag on the webpage it pops the error message of:
There is an error regarding a TypeError: Cannot read properties of undefined (reading 'rotation').
The specific lines of code that are not working are using the "current.rotation.y".
Any Help Would be Greatly Appreciated!!
Thank you