+
diff --git a/src/pages/portfilo/index.jsx b/src/pages/portfilo/index.jsx
index 2c7e166dc..3ff518860 100644
--- a/src/pages/portfilo/index.jsx
+++ b/src/pages/portfilo/index.jsx
@@ -16,7 +16,7 @@ import {
Divider,
Tooltip,
Grid,
- FloatButton,
+ FloatButton
} from 'antd'
import { motion, useScroll, useSpring } from 'framer-motion'
import {
@@ -31,7 +31,7 @@ import {
ToolOutlined,
ArrowLeftOutlined,
XOutlined,
- MenuOutlined,
+ MenuOutlined
} from '@ant-design/icons'
import avatarPng from '@assets/images/w.png'
@@ -54,7 +54,7 @@ const Section = ({ id, children, className = '' }) => {
Section.propTypes = {
id: PropTypes.string.isRequired,
children: PropTypes.node.isRequired,
- className: PropTypes.string,
+ className: PropTypes.string
}
const AnimatedCard = ({ children, delay = 0 }) => (
@@ -71,7 +71,7 @@ const AnimatedCard = ({ children, delay = 0 }) => (
AnimatedCard.propTypes = {
children: PropTypes.node.isRequired,
- delay: PropTypes.number,
+ delay: PropTypes.number
}
const MyPortfilo = () => {
@@ -84,7 +84,7 @@ const MyPortfilo = () => {
const scaleX = useSpring(scrollYProgress, {
stiffness: 100,
damping: 30,
- restDelta: 0.001,
+ restDelta: 0.001
})
const [targetOffset, setTargetOffset] = useState(80)
@@ -100,7 +100,7 @@ const MyPortfilo = () => {
{ key: 'skills', href: '#skills', title:
Skills },
{ key: 'projects', href: '#projects', title:
Work },
{ key: 'experience', href: '#experience', title:
Exp },
- { key: 'contact', href: '#contact', title:
Contact },
+ { key: 'contact', href: '#contact', title:
Contact }
]
const handleAnchorClick = (e, link) => {
@@ -123,7 +123,7 @@ const MyPortfilo = () => {
{ name: 'Tailwind CSS', color: '#38B2AC' },
{ name: 'Next.js', color: '#000000' },
{ name: 'GraphQL', color: '#E10098' },
- { name: 'Docker', color: '#2496ED' },
+ { name: 'Docker', color: '#2496ED' }
]
const projects = [
@@ -131,20 +131,20 @@ const MyPortfilo = () => {
title: 'Pro React Admin',
desc: 'A comprehensive enterprise-level admin dashboard template based on React, Ant Design, and Vite.',
tags: ['React', 'Ant Design', 'Vite'],
- icon:
,
+ icon:
},
{
title: 'E-Commerce Platform',
desc: 'A full-stack e-commerce solution with real-time inventory management and payment integration.',
tags: ['Next.js', 'Node.js', 'Stripe'],
- icon:
,
+ icon:
},
{
title: 'Data Visualization Dashboard',
desc: 'Interactive dashboard for visualizing complex datasets using D3.js and ECharts.',
tags: ['Vue', 'D3.js', 'ECharts'],
- icon:
,
- },
+ icon:
+ }
]
const experiences = [
@@ -152,25 +152,25 @@ const MyPortfilo = () => {
year: '2023 - Present',
title: 'Senior Frontend Engineer',
company: 'Tech Corp',
- desc: 'Leading the frontend team, architecting scalable solutions, and mentoring junior developers.',
+ desc: 'Leading the frontend team, architecting scalable solutions, and mentoring junior developers.'
},
{
year: '2021 - 2023',
title: 'Full Stack Developer',
company: 'StartUp Inc',
- desc: 'Developed and maintained multiple web applications using React and Node.js.',
+ desc: 'Developed and maintained multiple web applications using React and Node.js.'
},
{
year: '2019 - 2021',
title: 'Frontend Developer',
company: 'Web Solutions',
- desc: 'Collaborated with designers to implement responsive and accessible user interfaces.',
- },
+ desc: 'Collaborated with designers to implement responsive and accessible user interfaces.'
+ }
]
return (
{
? `radial-gradient(circle at 50% 50%, ${token.colorPrimaryBg} 0%, transparent 50%), radial-gradient(circle at 0% 0%, ${token.colorFill} 0%, transparent 30%), radial-gradient(circle at 100% 100%, ${token.colorFill} 0%, transparent 30%)`
: `radial-gradient(circle at 50% 50%, ${token.colorPrimaryBg} 0%, transparent 60%), radial-gradient(circle at 100% 0%, ${token.colorFill} 0%, transparent 40%)`,
backgroundAttachment: 'fixed',
- backgroundSize: 'cover',
+ backgroundSize: 'cover'
}}
>
{/* Floating Shapes Background */}
@@ -198,19 +198,19 @@ const MyPortfilo = () => {
height: '100%',
overflow: 'hidden',
pointerEvents: 'none',
- zIndex: 0,
+ zIndex: 0
}}
>
{
borderRadius: '50%',
background: token.colorPrimary,
filter: 'blur(100px)',
- opacity: 0.1,
+ opacity: 0.1
}}
/>
{
borderRadius: '50%',
background: token.colorSuccess,
filter: 'blur(120px)',
- opacity: 0.08,
+ opacity: 0.08
}}
/>
@@ -259,7 +259,7 @@ const MyPortfilo = () => {
height: 4,
background: token.colorPrimary,
transformOrigin: '0%',
- zIndex: 1000,
+ zIndex: 1000
}}
/>
@@ -272,13 +272,13 @@ const MyPortfilo = () => {
position: 'fixed',
top: 24,
left: 24,
- zIndex: 100,
+ zIndex: 100
}}
>
-
+
}
onClick={() => navigate('/')}
style={{
@@ -289,83 +289,85 @@ const MyPortfilo = () => {
boxShadow: token.boxShadowSecondary,
display: 'flex',
alignItems: 'center',
- justifyContent: 'center',
+ justifyContent: 'center'
}}
/>
{/* Navigation */}
- {!screens.md ? (
- }
- open={mobileMenuOpen}
- onOpenChange={(open) => setMobileMenuOpen(open)}
- style={{ right: 24, bottom: 24 }}
- >
- }
- tooltip="Home"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#home' })}
- />
- }
- tooltip="About"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#about' })}
- />
- }
- tooltip="Skills"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#skills' })}
- />
- }
- tooltip="Work"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#projects' })}
- />
- }
- tooltip="Exp"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#experience' })}
- />
- }
- tooltip="Contact"
- onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#contact' })}
- />
-
- ) : (
-
-
containerRef.current || document.getElementById('portfolio-container')}
- direction="vertical"
- onClick={handleAnchorClick}
- items={navItems}
- style={{ backgroundColor: 'transparent' }}
- />
-
- )}
+ {!screens.md
+ ? (
+ }
+ open={mobileMenuOpen}
+ onOpenChange={(open) => setMobileMenuOpen(open)}
+ style={{ right: 24, bottom: 24 }}
+ >
+ }
+ tooltip='Home'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#home' })}
+ />
+ }
+ tooltip='About'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#about' })}
+ />
+ }
+ tooltip='Skills'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#skills' })}
+ />
+ }
+ tooltip='Work'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#projects' })}
+ />
+ }
+ tooltip='Exp'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#experience' })}
+ />
+ }
+ tooltip='Contact'
+ onClick={() => handleAnchorClick({ preventDefault: () => {} }, { href: '#contact' })}
+ />
+
+ )
+ : (
+
+
containerRef.current || document.getElementById('portfolio-container')}
+ direction='vertical'
+ onClick={handleAnchorClick}
+ items={navItems}
+ style={{ backgroundColor: 'transparent' }}
+ />
+
+ )}
{/* Home Section */}
-
+
{
Hi, I'm Wkylin
-
+
Building Digital Experiences with Passion & Code
-
+
}
onClick={() => document.getElementById('projects')?.scrollIntoView({ behavior: 'smooth' })}
>
View Work
}
onClick={() => document.getElementById('contact')?.scrollIntoView({ behavior: 'smooth' })}
>
@@ -407,11 +409,11 @@ const MyPortfilo = () => {
{/* About Section */}
-
-
+
+
About Me
-
+
@@ -432,16 +434,16 @@ const MyPortfilo = () => {
{ title: 'Fast Learner', icon: },
{ title: 'Team Player', icon: },
{ title: 'Problem Solver', icon: },
- { title: 'Detail Oriented', icon: },
+ { title: 'Detail Oriented', icon: }
].map((item, index) => (
{item.icon}
@@ -456,8 +458,8 @@ const MyPortfilo = () => {
{/* Skills Section */}
-
-
+
+
Tech Stack
@@ -471,7 +473,7 @@ const MyPortfilo = () => {
fontSize: 16,
borderRadius: 20,
border: 'none',
- marginBottom: 8,
+ marginBottom: 8
}}
>
{skill.name}
@@ -485,7 +487,7 @@ const MyPortfilo = () => {
-
+
Expertise in building responsive, interactive, and accessible user interfaces using React, Vue,
and modern CSS frameworks.
@@ -495,7 +497,7 @@ const MyPortfilo = () => {
-
+
Experience in designing and implementing RESTful APIs, microservices, and database schemas using
Node.js and Python.
@@ -505,7 +507,7 @@ const MyPortfilo = () => {
-
+
Proficient in using Git, Docker, CI/CD pipelines, and cloud platforms to ensure smooth deployment
and operation.
@@ -518,8 +520,8 @@ const MyPortfilo = () => {
{/* Projects Section */}
-
-
+
+
Featured Projects
@@ -538,16 +540,16 @@ const MyPortfilo = () => {
alignItems: 'center',
justifyContent: 'center',
fontSize: 64,
- color: token.colorPrimary,
+ color: token.colorPrimary
}}
>
{project.icon}
}
actions={[
- ,
- ,
- ,
+ ,
+ ,
+
]}
>
{
{/* Experience Section */}
-
-
+
+
Experience
({
title: (
- {exp.year}
+ {exp.year}
),
content: (
-
+
{exp.title}
- {exp.company}
+ {exp.company}
{exp.desc}
),
- color: token.colorPrimary,
+ color: token.colorPrimary
}))}
/>
{/* Contact Section */}
-