Skip to content

Commit c5ef0ef

Browse files
committed
chore(deps): upgrade to Tailwind CSS v4 and update all packages
1 parent 64f4276 commit c5ef0ef

20 files changed

Lines changed: 1284 additions & 932 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ yarn-error.log*
3535
# typescript
3636
*.tsbuildinfo
3737
.backend
38-
backend/*
38+
backend/*
39+
xd.txt

app/components/layout/Header.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ const Header = () => {
9191
return (
9292
<header
9393
className={`fixed top-0 left-0 w-full z-50 transition-all duration-300 ${state.scrolled
94-
? 'bg-secondary/90 backdrop-blur-sm py-3 shadow-lg'
94+
? 'bg-secondary/90 backdrop-blur-xs py-3 shadow-lg'
9595
: 'bg-transparent py-5'
9696
}`}
9797
>
@@ -123,7 +123,7 @@ const Header = () => {
123123

124124
{/* Mobile Menu Toggle */}
125125
<button
126-
className="md:hidden text-white focus:outline-none focus:ring-2 focus:ring-pink-500 rounded-lg p-1"
126+
className="md:hidden text-white focus:outline-hidden focus:ring-2 focus:ring-pink-500 rounded-lg p-1"
127127
onClick={toggleMenu}
128128
aria-expanded={state.isMenuOpen}
129129
aria-controls="mobile-menu"
@@ -136,7 +136,7 @@ const Header = () => {
136136
{/* Mobile Menu */}
137137
<div
138138
id="mobile-menu"
139-
className={`md:hidden bg-secondary/95 backdrop-blur-sm absolute w-full transition-all duration-300 ${state.isMenuOpen
139+
className={`md:hidden bg-secondary/95 backdrop-blur-xs absolute w-full transition-all duration-300 ${state.isMenuOpen
140140
? 'opacity-100 translate-y-0'
141141
: 'opacity-0 -translate-y-2 pointer-events-none'
142142
}`}

app/components/sections/About.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,22 +152,22 @@ const About = () => {
152152

153153
// === Skeleton Loading Component ===
154154
const SkeletonLoader = useCallback(() => (
155-
<div className="max-w-3xl mx-auto bg-secondary/30 rounded-xl p-6 md:p-8 backdrop-blur-sm border border-pink-500/10">
155+
<div className="max-w-3xl mx-auto bg-secondary/30 rounded-xl p-6 md:p-8 backdrop-blur-xs border border-pink-500/10">
156156
{/* Title Skeleton */}
157-
<div className="h-8 w-48 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded-lg animate-pulse mb-8 mx-auto" />
157+
<div className="h-8 w-48 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded-lg animate-pulse mb-8 mx-auto" />
158158

159159
{/* First Paragraph Skeleton */}
160160
<div className="space-y-3 mb-6">
161-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-3/4" />
162-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-full" />
163-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-5/6" />
161+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-3/4" />
162+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-full" />
163+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-5/6" />
164164
</div>
165165

166166
{/* Second Paragraph Skeleton */}
167167
<div className="space-y-3">
168-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-2/3" />
169-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-full" />
170-
<div className="h-4 bg-gradient-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-4/5" />
168+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-2/3" />
169+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-full" />
170+
<div className="h-4 bg-linear-to-r from-pink-500/20 to-cyan-500/20 rounded animate-pulse w-4/5" />
171171
</div>
172172
</div>
173173
), []);
@@ -184,7 +184,7 @@ const About = () => {
184184
{[...Array(PARTICLE_COUNT)].map((_, i) => (
185185
<div
186186
key={i}
187-
className={`absolute w-1 h-1 bg-gradient-to-r from-pink-500 to-cyan-500 rounded-full
187+
className={`absolute w-1 h-1 bg-linear-to-r from-pink-500 to-cyan-500 rounded-full
188188
${isVisible ? 'animate-bounce' : 'opacity-0'}`}
189189
style={{
190190
left: `${20 + i * 15}%`,
@@ -211,7 +211,7 @@ const About = () => {
211211
<SkeletonLoader />
212212
) : (
213213
<div
214-
className={`max-w-3xl mx-auto bg-secondary/30 rounded-xl p-6 md:p-8 backdrop-blur-sm
214+
className={`max-w-3xl mx-auto bg-secondary/30 rounded-xl p-6 md:p-8 backdrop-blur-xs
215215
border border-pink-500/10 hover:border-pink-500/30 transition-all duration-500
216216
hover:shadow-2xl hover:shadow-pink-500/5 transform ${
217217
isVisible ? 'opacity-100 translate-x-0' : 'opacity-0 -translate-x-8'
@@ -241,7 +241,7 @@ const About = () => {
241241
{[...Array(3)].map((_, i) => (
242242
<div
243243
key={i}
244-
className="w-2 h-2 bg-gradient-to-r from-pink-500 to-cyan-500 rounded-full animate-pulse"
244+
className="w-2 h-2 bg-linear-to-r from-pink-500 to-cyan-500 rounded-full animate-pulse"
245245
style={{ animationDelay: `${i * 0.1}s` }}
246246
/>
247247
))}

app/components/sections/Contact.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ const Contact = () => {
453453
{/* Submit Button */}
454454
<Button
455455
type="submit"
456-
className="w-full bg-gradient-to-r from-pink-500 to-purple-600 hover:from-pink-600 hover:to-purple-700 text-white font-medium py-6 rounded-xl transition-all duration-300 transform hover:scale-[1.02] disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none"
456+
className="w-full bg-linear-to-r from-pink-500 to-purple-600 hover:from-pink-600 hover:to-purple-700 text-white font-medium py-6 rounded-xl transition-all duration-300 transform hover:scale-[1.02] disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none"
457457
disabled={state.isSubmitting || (captchaState.showCaptcha && !captchaState.token)}
458458
>
459459
{state.isSubmitting ? (

app/components/sections/GitHubStats.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ const GitHubStatsComponent = () => {
171171
return (
172172
<section className="py-16 w-full">
173173
<div className="container mx-auto px-4 md:px-6">
174-
<h2 className="text-3xl md:text-4xl font-bold mb-8 bg-gradient-to-r from-pink-400 via-purple-400 to-indigo-400 bg-clip-text text-transparent text-center">
174+
<h2 className="text-3xl md:text-4xl font-bold mb-8 bg-linear-to-r from-pink-400 via-purple-400 to-indigo-400 bg-clip-text text-transparent text-center">
175175
GitHub Statistics
176176
</h2>
177177
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
@@ -202,7 +202,7 @@ const GitHubStatsComponent = () => {
202202
</p>
203203
<button
204204
onClick={handleRefresh}
205-
className="bg-gradient-to-r from-blue-500 to-purple-500 hover:from-blue-600 hover:to-purple-600 text-white px-4 py-2 rounded-lg transition-colors"
205+
className="bg-linear-to-r from-blue-500 to-purple-500 hover:from-blue-600 hover:to-purple-600 text-white px-4 py-2 rounded-lg transition-colors"
206206
disabled={isRefreshing}
207207
>
208208
{isRefreshing ? (
@@ -229,7 +229,7 @@ const GitHubStatsComponent = () => {
229229
>
230230
<div className="container mx-auto px-4 md:px-6">
231231
<div className="flex justify-between items-center mb-8">
232-
<h2 className="text-3xl md:text-4xl font-bold bg-gradient-to-r from-pink-400 via-purple-400 to-indigo-400 bg-clip-text text-transparent">
232+
<h2 className="text-3xl md:text-4xl font-bold bg-linear-to-r from-pink-400 via-purple-400 to-indigo-400 bg-clip-text text-transparent">
233233
GitHub Statistics
234234
</h2>
235235
<div className="flex items-center gap-4">

app/components/sections/Hero.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ const Hero = () => {
152152
<div className="relative w-32 h-32 sm:w-40 sm:h-40 md:w-48 md:h-48 mb-6">
153153
{/* Animated border ring */}
154154
<div
155-
className="absolute inset-0 rounded-full p-0.5 bg-gradient-to-r from-[#FF1493] via-[#00FFFF] to-[#FF1493]"
155+
className="absolute inset-0 rounded-full p-0.5 bg-linear-to-r from-[#FF1493] via-[#00FFFF] to-[#FF1493]"
156156
style={{
157157
animation: "spin 3s linear infinite",
158158
// Preload the gradient to prevent flash
@@ -180,7 +180,7 @@ const Hero = () => {
180180
</div>
181181

182182
{/* Subtle glow effect */}
183-
<div className="absolute inset-0 bg-gradient-to-r from-[#FF1493]/10 to-[#00FFFF]/10 rounded-full blur-md animate-pulse"></div>
183+
<div className="absolute inset-0 bg-linear-to-r from-[#FF1493]/10 to-[#00FFFF]/10 rounded-full blur-md animate-pulse"></div>
184184
</div>
185185

186186
{/* Name and Title - Immediately visible */}
@@ -191,7 +191,7 @@ const Hero = () => {
191191
<div className="flex flex-col sm:flex-row gap-4 mt-4">
192192
{/* About Me Button */}
193193
<Button
194-
className="bg-gradient-to-r from-[#FF1493] to-[#00FFFF] hover:from-[#FF1493]/80 hover:to-[#00FFFF]/80 text-white font-medium px-6 py-3 rounded-lg transition-all duration-300 transform hover:scale-105 shadow-lg shadow-[#FF1493]/20 hover:shadow-[#00FFFF]/30"
194+
className="bg-linear-to-r from-[#FF1493] to-[#00FFFF] hover:from-[#FF1493]/80 hover:to-[#00FFFF]/80 text-white font-medium px-6 py-3 rounded-lg transition-all duration-300 transform hover:scale-105 shadow-lg shadow-[#FF1493]/20 hover:shadow-[#00FFFF]/30"
195195
onClick={scrollToAbout}
196196
>
197197
About Me

app/components/sections/Languages.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const Languages = () => {
7979

8080
// Compact loading indicator
8181
const LoadingOverlay = () => (
82-
<div className="absolute inset-0 bg-gray-800/80 backdrop-blur-sm rounded-lg flex items-center justify-center">
82+
<div className="absolute inset-0 bg-gray-800/80 backdrop-blur-xs rounded-lg flex items-center justify-center">
8383
<div className="flex items-center space-x-3">
8484
<RefreshCw className="w-5 h-5 animate-spin text-[#00FFFF]" />
8585
<span className="text-gray-300 text-sm">Loading...</span>
@@ -114,7 +114,7 @@ const Languages = () => {
114114
</h2>
115115

116116
<div className="max-w-4xl mx-auto text-center pt-4 pb-0">
117-
<div className="relative w-full max-w-[400px] md:max-w-[460px] lg:max-w-[500px] mx-auto p-[2px] rounded-xl bg-gradient-to-br from-cyan-400/60 to-pink-500/60 shadow-xl hover:shadow-cyan-500/30 transition-all duration-300 group">
117+
<div className="relative w-full max-w-[400px] md:max-w-[460px] lg:max-w-[500px] mx-auto p-[2px] rounded-xl bg-linear-to-br from-cyan-400/60 to-pink-500/60 shadow-xl hover:shadow-cyan-500/30 transition-all duration-300 group">
118118
<div className="rounded-[10px] overflow-hidden bg-[#0d1117]">
119119
<Image
120120
src={imageUrl + (retryCount > 0 ? `&t=${Date.now()}` : '')}

app/components/sections/Projects.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ const fetchGitHubData = async (endpoint: string): Promise<any> => {
8787
// ===== SKELETON =====
8888
const ProjectCardSkeleton = memo(() => (
8989
<div className="bg-gray-900/50 border border-gray-700/50 rounded-xl overflow-hidden h-[320px] animate-pulse">
90-
<div className="h-48 bg-gradient-to-r from-gray-700/20 to-gray-700/10" />
90+
<div className="h-48 bg-linear-to-r from-gray-700/20 to-gray-700/10" />
9191
<div className="p-4 space-y-3">
9292
<div className="h-6 bg-gray-700/50 rounded w-3/4" />
9393
<div className="h-4 bg-gray-700/50 rounded w-full" />
@@ -138,10 +138,10 @@ const CustomProjectCard = memo(({ project }: { project: CustomProject }) => {
138138
quality={75}
139139
/>
140140

141-
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent" />
141+
<div className="absolute inset-0 bg-linear-to-t from-black/70 via-transparent to-transparent" />
142142

143143
{project.featured && (
144-
<div className="absolute top-2 right-2 bg-gradient-to-r from-pink-500 to-purple-500 px-2 py-1 rounded-full text-xs text-white font-medium">
144+
<div className="absolute top-2 right-2 bg-linear-to-r from-pink-500 to-purple-500 px-2 py-1 rounded-full text-xs text-white font-medium">
145145
<Star size={10} className="inline mr-1" />
146146
Featured
147147
</div>
@@ -165,12 +165,12 @@ const CustomProjectCard = memo(({ project }: { project: CustomProject }) => {
165165
</div>
166166
</div>
167167

168-
<div className="p-4 flex flex-col flex-grow">
168+
<div className="p-4 flex flex-col grow">
169169
<h3 className="text-lg font-bold mb-2 text-cyan-400 line-clamp-1">
170170
{project.name}
171171
</h3>
172172

173-
<p className="text-gray-300 mb-4 text-sm line-clamp-2 flex-grow">
173+
<p className="text-gray-300 mb-4 text-sm line-clamp-2 grow">
174174
{project.description}
175175
</p>
176176

@@ -220,7 +220,7 @@ const GitHubProjectCard = memo(({ project }: { project: GitHubRepo }) => {
220220
quality={75}
221221
/>
222222

223-
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent" />
223+
<div className="absolute inset-0 bg-linear-to-t from-black/70 via-transparent to-transparent" />
224224

225225
{project.language && (
226226
<div className="absolute top-2 left-2 bg-black/60 px-2 py-1 rounded-full text-xs text-white">
@@ -241,12 +241,12 @@ const GitHubProjectCard = memo(({ project }: { project: GitHubRepo }) => {
241241
</div>
242242
</div>
243243

244-
<div className="p-4 flex flex-col flex-grow">
244+
<div className="p-4 flex flex-col grow">
245245
<h3 className="text-lg font-bold mb-2 text-cyan-400 line-clamp-1">
246246
{project.name}
247247
</h3>
248248

249-
<p className="text-gray-300 mb-3 text-sm line-clamp-2 flex-grow">
249+
<p className="text-gray-300 mb-3 text-sm line-clamp-2 grow">
250250
{project.description || "No description available"}
251251
</p>
252252

@@ -366,7 +366,7 @@ const Projects = () => {
366366
return (
367367
<section id="projects" className="py-16 w-full">
368368
<div className="container mx-auto px-4">
369-
<h2 className="text-3xl font-bold mb-8 text-center bg-gradient-to-r from-cyan-400 to-blue-500 bg-clip-text text-transparent">
369+
<h2 className="text-3xl font-bold mb-8 text-center bg-linear-to-r from-cyan-400 to-blue-500 bg-clip-text text-transparent">
370370
Projects
371371
</h2>
372372
<div className="text-center text-red-400 bg-red-900/20 border border-red-500/20 p-6 rounded-lg">
@@ -392,7 +392,7 @@ const Projects = () => {
392392
}`}
393393
>
394394
<div className="container mx-auto px-4">
395-
<h2 className="text-3xl font-bold mb-4 text-center bg-gradient-to-r from-cyan-400 to-blue-500 bg-clip-text text-transparent">
395+
<h2 className="text-3xl font-bold mb-4 text-center bg-linear-to-r from-cyan-400 to-blue-500 bg-clip-text text-transparent">
396396
Projects
397397
</h2>
398398
<p className="text-gray-400 text-center mb-8 max-w-2xl mx-auto">

app/components/sections/Support.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,10 @@ const Support = () => {
9999
ref={supportRef}
100100
className={`py-16 w-full transition-all duration-1000 ${
101101
state.isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8'
102-
} bg-gradient-to-b from-secondary/10 to-secondary/40`}
102+
} bg-linear-to-b from-secondary/10 to-secondary/40`}
103103
>
104104
<div className="container mx-auto px-4 sm:px-6 text-center max-w-3xl">
105-
<h2 className="text-3xl md:text-4xl font-extrabold mb-6 bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-purple-600 to-indigo-500">
105+
<h2 className="text-3xl md:text-4xl font-extrabold mb-6 bg-clip-text text-transparent bg-linear-to-r from-pink-500 via-purple-600 to-indigo-500">
106106
Support My Work
107107
</h2>
108108
<p className="text-sm sm:text-base mb-12 text-gray-300 leading-relaxed">
@@ -120,13 +120,13 @@ const Support = () => {
120120
onMouseLeave={handleMouseLeave}
121121
className={`
122122
flex items-center gap-3 w-full
123-
bg-gradient-to-r from-pink-500 to-purple-600
123+
bg-linear-to-r from-pink-500 to-purple-600
124124
hover:from-pink-600 hover:to-purple-700
125125
text-white font-semibold px-6 py-3 sm:px-8 sm:py-4
126126
rounded-lg shadow-lg
127127
transition-all duration-300
128128
transform hover:scale-105
129-
focus:outline-none focus:ring-4 focus:ring-pink-400/60
129+
focus:outline-hidden focus:ring-4 focus:ring-pink-400/60
130130
disabled:opacity-50 disabled:cursor-not-allowed
131131
`}
132132
>
@@ -150,7 +150,7 @@ const Support = () => {
150150
{/* Buy Me a Coffee Option */}
151151
<button
152152
onClick={handleCoffeeClick}
153-
className="w-full flex items-center gap-3 p-3 sm:p-4 text-left text-white hover:bg-gradient-to-r hover:from-pink-500/80 hover:to-purple-600/80 rounded-lg transition-all duration-200 group"
153+
className="w-full flex items-center gap-3 p-3 sm:p-4 text-left text-white hover:bg-linear-to-r hover:from-pink-500/80 hover:to-purple-600/80 rounded-lg transition-all duration-200 group"
154154
>
155155
<Coffee className="h-5 w-5 text-pink-400 group-hover:text-white transition-colors" />
156156
<span className="font-medium text-sm sm:text-base">Buy Me a Coffee</span>
@@ -159,7 +159,7 @@ const Support = () => {
159159
{/* UPI Option */}
160160
<button
161161
onClick={copyUpiId}
162-
className="w-full flex items-center gap-3 p-3 sm:p-4 text-left text-white hover:bg-gradient-to-r hover:from-green-500/80 hover:to-blue-600/80 rounded-lg transition-all duration-200 group"
162+
className="w-full flex items-center gap-3 p-3 sm:p-4 text-left text-white hover:bg-linear-to-r hover:from-green-500/80 hover:to-blue-600/80 rounded-lg transition-all duration-200 group"
163163
>
164164
{state.copied ? (
165165
<Check className="h-5 w-5 text-green-400 group-hover:text-white transition-colors" />

app/components/ui/VisitorCounter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ const VisitorCounter = () => {
123123
className="flex items-center gap-1 text-xs text-gray-500 dark:text-gray-300 transition-all duration-200 scale-[0.95]"
124124
aria-label={`${count.toLocaleString()} total visitors`}
125125
>
126-
<Users className={`text-cyan-400 w-4 h-4 flex-shrink-0 ${isUpdating ? 'animate-pulse' : ''}`} />
126+
<Users className={`text-cyan-400 w-4 h-4 shrink-0 ${isUpdating ? 'animate-pulse' : ''}`} />
127127
<span className="tabular-nums">
128128
{count.toLocaleString()} visitors
129129
</span>

0 commit comments

Comments
 (0)