- ),
+ )
}))}
/>
)
@@ -213,7 +217,7 @@ const ProTabs = (props) => {
ProTabs.propTypes = {
panesItem: PropTypes.object,
tabActiveKey: PropTypes.string,
- style: PropTypes.object,
+ style: PropTypes.object
}
export default ProTabs
diff --git a/src/pages/motion/index.jsx b/src/pages/motion/index.jsx
index ff62e2498..389e39ebd 100644
--- a/src/pages/motion/index.jsx
+++ b/src/pages/motion/index.jsx
@@ -30,34 +30,34 @@ const ParallaxVert = () => {
margin: '20px auto',
padding: '20px',
backgroundColor: 'rgba(255, 255, 255, 0.05)',
- backdropFilter: 'blur(10px)',
+ backdropFilter: 'blur(10px)'
}}
ref={constraintsRef}
- className="dark:border-gray-600 dark:bg-black/20"
+ className='dark:border-gray-600 dark:bg-black/20'
>
+ />
+
{
controller.start({ scale: 1.2 })
}}
@@ -65,7 +65,7 @@ const ParallaxVert = () => {
大
{
controller.start({ rotate: 45 })
}}
@@ -73,7 +73,7 @@ const ParallaxVert = () => {
旋转
{
controller.start({ opacity: 0.2 })
}}
@@ -81,7 +81,7 @@ const ParallaxVert = () => {
透明度
{
controller.start({ opacity: 1, rotate: 0, scale: 1.0 })
}}
@@ -90,27 +90,27 @@ const ParallaxVert = () => {
- ),
+ )
},
{
title: 'About',
content: '关于我们:我们致力于创造优秀的用户体验,通过现代化的技术栈和设计理念。',
- component:
,
+ component:
},
{
title: 'Contact',
content: '联系我们:如果您有任何问题或建议,请随时与我们取得联系。',
- component:
,
- },
+ component:
+ }
]
return (
@@ -118,11 +118,11 @@ const ParallaxVert = () => {
)
diff --git a/src/pages/portfilo/index.jsx b/src/pages/portfilo/index.jsx
index 283dd2e13..a4ea588ad 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 = () => {
@@ -83,7 +83,7 @@ const MyPortfilo = () => {
const scaleX = useSpring(scrollYProgress, {
stiffness: 100,
damping: 30,
- restDelta: 0.001,
+ restDelta: 0.001
})
const [targetOffset, setTargetOffset] = useState(80)
@@ -99,7 +99,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) => {
@@ -122,7 +122,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 = [
@@ -130,20 +130,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 = [
@@ -151,25 +151,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 */}
@@ -195,19 +195,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
}}
/>
@@ -256,7 +256,7 @@ const MyPortfilo = () => {
height: 4,
background: token.colorPrimary,
transformOrigin: '0%',
- zIndex: 1000,
+ zIndex: 1000
}}
/>
@@ -269,13 +269,13 @@ const MyPortfilo = () => {
position: 'fixed',
top: 24,
left: 24,
- zIndex: 100,
+ zIndex: 100
}}
>
-
+
}
onClick={() => navigate('/')}
style={{
@@ -286,83 +286,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' })}
- />
-
- ) : (
-
-
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' })}
+ />
+
+ )
+ : (
+
+
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' })}
>
@@ -404,11 +406,11 @@ const MyPortfilo = () => {
{/* About Section */}
-
-
+
+
About Me
-
+
@@ -429,16 +431,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}
@@ -453,8 +455,8 @@ const MyPortfilo = () => {
{/* Skills Section */}
-
-
+
+
Tech Stack
@@ -468,7 +470,7 @@ const MyPortfilo = () => {
fontSize: 16,
borderRadius: 20,
border: 'none',
- marginBottom: 8,
+ marginBottom: 8
}}
>
{skill.name}
@@ -482,7 +484,7 @@ const MyPortfilo = () => {
-
+
Expertise in building responsive, interactive, and accessible user interfaces using React, Vue,
and modern CSS frameworks.
@@ -492,7 +494,7 @@ const MyPortfilo = () => {
-
+
Experience in designing and implementing RESTful APIs, microservices, and database schemas using
Node.js and Python.
@@ -502,7 +504,7 @@ const MyPortfilo = () => {
-
+
Proficient in using Git, Docker, CI/CD pipelines, and cloud platforms to ensure smooth deployment
and operation.
@@ -515,8 +517,8 @@ const MyPortfilo = () => {
{/* Projects Section */}
-
-
+
+
Featured Projects
@@ -535,16 +537,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 */}
-