From 59f1f2bd99f529af511b7c46c1d338c5e56c30fc Mon Sep 17 00:00:00 2001 From: yusufipk <50673822-yusufipk@users.noreply.replit.com> Date: Wed, 17 Dec 2025 13:40:11 +0000 Subject: [PATCH] Enhance the application's visual appeal with refined animations and effects Update UI components including ActionButtons, CardStack, DynamicBackground, EndOfDeck, Header, and SwipeCard to incorporate more visually engaging animations, gradients, and effects, while also adjusting button positioning for improved user experience. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e522d728-b28a-437f-b576-83935afe7ea0 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 0e0edafc-30e9-4e23-88d0-1ecbc1922137 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/55e426a8-5a2b-421b-8bd4-30481ae0063b/e522d728-b28a-437f-b576-83935afe7ea0/m8j6ju0 Replit-Helium-Checkpoint-Created: true --- client/src/components/ActionButtons.tsx | 70 ++++++--- client/src/components/CardStack.tsx | 18 ++- client/src/components/DynamicBackground.tsx | 66 ++++++-- client/src/components/EndOfDeck.tsx | 136 +++++++++++------ client/src/components/Header.tsx | 35 ++++- client/src/components/SwipeCard.tsx | 157 +++++++++++++------- 6 files changed, 345 insertions(+), 137 deletions(-) diff --git a/client/src/components/ActionButtons.tsx b/client/src/components/ActionButtons.tsx index 394c1f0..2ad4aa5 100644 --- a/client/src/components/ActionButtons.tsx +++ b/client/src/components/ActionButtons.tsx @@ -1,5 +1,5 @@ -import { Heart, X, RotateCcw } from 'lucide-react'; -import { Button } from '@/components/ui/button'; +import { motion } from 'framer-motion'; +import { Heart, X, RotateCcw, Zap } from 'lucide-react'; interface ActionButtonsProps { onLike: () => void; @@ -17,40 +17,68 @@ export default function ActionButtons({ disabled = false, }: ActionButtonsProps) { return ( -
- +
+
+
+ + {showReset && onReset && ( - +
+
+ + )} - +
+
+
+ + + + +
+
+ +
); } diff --git a/client/src/components/CardStack.tsx b/client/src/components/CardStack.tsx index f18992e..6b6e232 100644 --- a/client/src/components/CardStack.tsx +++ b/client/src/components/CardStack.tsx @@ -81,6 +81,7 @@ export default function CardStack({ cards, onBackgroundChange }: CardStackProps)
-
- {currentIndex + 1} / {cards.length} +
+
+ {cards.map((_, idx) => ( +
+ ))} +
); diff --git a/client/src/components/DynamicBackground.tsx b/client/src/components/DynamicBackground.tsx index c97951f..d7b1a67 100644 --- a/client/src/components/DynamicBackground.tsx +++ b/client/src/components/DynamicBackground.tsx @@ -10,14 +10,62 @@ export default function DynamicBackground({ colors }: DynamicBackgroundProps) { : ['#6B46C1', '#4F46E5', '#2563EB']; return ( - -
- +
+
+ + + + + + + +
+ +
+
+ + + + +
); } diff --git a/client/src/components/EndOfDeck.tsx b/client/src/components/EndOfDeck.tsx index 6ac7724..f2b2f44 100644 --- a/client/src/components/EndOfDeck.tsx +++ b/client/src/components/EndOfDeck.tsx @@ -1,6 +1,5 @@ import { motion } from 'framer-motion'; -import { PartyPopper, RotateCcw, Download } from 'lucide-react'; -import { Button } from '@/components/ui/button'; +import { PartyPopper, RotateCcw, Download, Trophy, Star, ExternalLink } from 'lucide-react'; import type { DistroCard } from '@/data/distros'; interface EndOfDeckProps { @@ -11,74 +10,125 @@ interface EndOfDeckProps { export default function EndOfDeck({ likedCards, onReset }: EndOfDeckProps) { return ( - - - +
+ + +
+ +
+
+ + + +
-

- Öneriler Hazır! -

-

+ + Eşleşme Tamamlandı! + +

{likedCards.length > 0 - ? `${likedCards.length} dağıtım beğendin` - : 'Hiçbir dağıtım beğenmedin'} + ? `${likedCards.length} dağıtım ile eşleştin` + : 'Henüz bir eşleşme yok'}

{likedCards.length > 0 && ( -
- {likedCards.map((card) => ( +
+ {likedCards.map((card, idx) => ( - {card.distroName} -
-

{card.distroName}

-

{card.desktopEnvironment}

+
+
+ +
+ {card.distroName} +
+ +
+
+ +
+
+
+ +
+

{card.distroName}

+

{card.desktopEnvironment}

+
+ {[...Array(5)].map((_, i) => ( + + ))} +
))}
)} -
- +
+ + Tekrar Başla + + {likedCards.length > 0 && ( - +
+
+ + Karşılaştır + )}
diff --git a/client/src/components/Header.tsx b/client/src/components/Header.tsx index 573e22b..82cf1f4 100644 --- a/client/src/components/Header.tsx +++ b/client/src/components/Header.tsx @@ -1,21 +1,40 @@ import { motion } from 'framer-motion'; -import { Terminal } from 'lucide-react'; +import { Terminal, Sparkles } from 'lucide-react'; export default function Header() { return ( -
-
- +
+ + + + + + +
+

+ DistroMatch +

+

Sana uygun Linux'u bul

-

- DistroMatch -

+
+ +
+
+ 6 Dağıtım
); diff --git a/client/src/components/SwipeCard.tsx b/client/src/components/SwipeCard.tsx index 3a862ab..d364730 100644 --- a/client/src/components/SwipeCard.tsx +++ b/client/src/components/SwipeCard.tsx @@ -1,5 +1,5 @@ import { motion, useMotionValue, useTransform, PanInfo } from 'framer-motion'; -import { Heart, X } from 'lucide-react'; +import { Heart, X, Sparkles } from 'lucide-react'; import type { DistroCard } from '@/data/distros'; interface SwipeCardProps { @@ -23,6 +23,7 @@ export default function SwipeCard({ const rotate = useTransform(x, [-300, 0, 300], [-15, 0, 15]); const likeOpacity = useTransform(x, [0, 150], [0, 1]); const nopeOpacity = useTransform(x, [-150, 0], [1, 0]); + const glowIntensity = useTransform(x, [-200, 0, 200], [1, 0, 1]); const handleDragEnd = (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => { const threshold = 150; @@ -64,63 +65,111 @@ export default function SwipeCard({ }} >
-
- {`${card.distroName} - - {isTop && ( - <> - -
- -
-
- - -
- -
-
- - )} -
+
-
-

- {card.wittyTitle} -

-
- - {card.distroName} - - - {card.desktopEnvironment} - -
- {card.tags.slice(0, 3).map((tag) => ( - + +
+
+
+ + {`${card.distroName} + +
+
+ + {card.desktopEnvironment} +
+
+ + {isTop && ( + <> + - {tag} - - ))} +
+ + + + + + +
+ + + + + + 0 + ? 'radial-gradient(circle at center, rgba(34, 197, 94, 0.2) 0%, transparent 70%)' + : 'radial-gradient(circle at center, rgba(239, 68, 68, 0.2) 0%, transparent 70%)' + }} + /> + + )} +
+ +
+
+ +
+
+

+ "{card.wittyTitle}" +

+
+ + {card.distroName} + +
+ + Linux Distribution + +
+
+ +
+ {card.tags.slice(0, 3).map((tag) => ( + + {tag} + + ))} +