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} + + ))} +