diff --git a/src/components/testimonials/TestimonialCard.tsx b/src/components/testimonials/TestimonialCard.tsx index 7c378a85..d9e5be27 100644 --- a/src/components/testimonials/TestimonialCard.tsx +++ b/src/components/testimonials/TestimonialCard.tsx @@ -2,6 +2,7 @@ import React from "react"; import { motion } from "framer-motion"; import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar"; import { useSafeColorMode } from "../../utils/useSafeColorMode"; +import { ExternalLink, Quote } from "lucide-react"; interface TestimonialCardProps { name: string; @@ -22,92 +23,120 @@ const TestimonialCard: React.FC = ({ }) => { const { colorMode, isDark } = useSafeColorMode(); - // Function to format the link display const formatLinkDisplay = (url: string) => { try { const urlObj = new URL(url); return urlObj.hostname + urlObj.pathname; } catch { - // If URL parsing fails, return the original link return url; } }; return ( - {/* Header with Avatar and Name */} -
- - - CN - -
-

- {name} -

-

- @{username} + {/* Gradient Background */} +

+ + {/* Quote Icon */} +
+ +
+ +
+ {/* Header */} +
+
+ + + + {name.charAt(0)} + + +
+
+
+

+ {name} +

+

+ @{username} +

+
+
+ + {/* Content */} +
+

+ {content.replace(/#\w+/g, '').trim()}

-
- {/* Content */} -

- {content} -

+ {/* Footer */} +
+ {/* Hashtags */} +
+ {content.match(/#\w+/g)?.map((hashtag, index) => ( + + {hashtag} + + ))} +
- {/* Footer with Hashtags and Date */} -
- {/* Hashtags */} -
- {content.match(/#\w+/g)?.map((hashtag, index) => ( - + - {hashtag} + {formatLinkDisplay(link)} + + + + {date} - ))} -
- - {/* Link and Date Row */} -
+ + {/* Hover Effect Border */} +
); }; -export default TestimonialCard; +export default TestimonialCard; \ No newline at end of file diff --git a/src/components/testimonials/TestimonialCarousel.tsx b/src/components/testimonials/TestimonialCarousel.tsx index 01acbb0d..db76a2f6 100644 --- a/src/components/testimonials/TestimonialCarousel.tsx +++ b/src/components/testimonials/TestimonialCarousel.tsx @@ -10,9 +10,10 @@ import { import { Button } from "../ui/button"; import TestimonialCard from "./TestimonialCard"; import Autoplay from "embla-carousel-autoplay"; +import { motion } from "framer-motion"; +import { useSafeColorMode } from "../../utils/useSafeColorMode"; -// Sample testimonial data -const testimonials = [ +const baseTestimonials = [ { name: "Rashi Chouhan", username: "RashiChouhan", @@ -42,10 +43,13 @@ const testimonials = [ }, ]; +const testimonials = [...baseTestimonials, ...baseTestimonials]; + export function TestimonialCarousel() { const [api, setApi] = useState(); const [current, setCurrent] = useState(0); const [count, setCount] = useState(0); + const { colorMode } = useSafeColorMode(); useEffect(() => { if (!api) { @@ -61,52 +65,102 @@ export function TestimonialCarousel() { }, [api]); return ( -
-
-

Loved by Many Users

-
+
+ {/* Background Elements */} +
+
+
- - - {testimonials.map((testimonial, index) => ( - - - - ))} - - -
- -
- {Array.from({ length: count }).map((_, index) => ( -
+ + +
+
+ +
); -} +} \ No newline at end of file diff --git a/src/components/topmate/TopMateCard.tsx b/src/components/topmate/TopMateCard.tsx index faba360b..be68d0f6 100644 --- a/src/components/topmate/TopMateCard.tsx +++ b/src/components/topmate/TopMateCard.tsx @@ -1,6 +1,6 @@ import React from "react"; import { motion } from "framer-motion"; -import { ArrowUpRight, Clock } from "lucide-react"; +import { ArrowUpRight, Clock, Calendar, Star } from "lucide-react"; import { useSafeColorMode } from "../../utils/useSafeColorMode"; interface TopMateCardProps { @@ -24,120 +24,131 @@ const TopMateCard: React.FC = ({ return ( - {/* Decorative Arrows */} -
- {[...Array(3)].map((_, i) => ( - - - - ))} -
+ {/* Gradient Background */} +
+ + {/* Floating Elements */} +
+
- {/* Card Content */} -
- {/* Header */} -
-
- - 1:1 CALL +
+ {/* Header Badge */} +
+
+ + + 1:1 MENTORSHIP -
- - {duration} +
+ + {duration}
{/* Title */} -

+

{title}

{/* Description */} -

+

{description}

{/* Profile Section */} -
-
- Profile -
- - Book a slot at - - - topmate.io/{username} - - +
+
+
+
+ Profile +
+
+
+
+
+

+ Book your session at +

+ + topmate.io/{username} + + +
-
-
- {/* Show only the circular icon part of the Topmate logo */} -
- Topmate icon + + {/* Rating */} +
+
+ {[...Array(5)].map((_, i) => ( + + ))} +
+ + 5.0 rating +
- {/* Theme-aware text to ensure readability on dark backgrounds */} - - topmate -
-
- {/* Gradient Border Effect */} -
+ {/* CTA Button */} + + + Schedule Now + + +
); }; -export default TopMateCard; +export default TopMateCard; \ No newline at end of file diff --git a/src/components/topmate/TopMateSection.tsx b/src/components/topmate/TopMateSection.tsx index 91d48fce..4502bc7e 100644 --- a/src/components/topmate/TopMateSection.tsx +++ b/src/components/topmate/TopMateSection.tsx @@ -1,9 +1,10 @@ import React from "react"; import TopMateCard from "./TopMateCard"; import { useSafeColorMode } from "../../utils/useSafeColorMode"; +import { motion } from "framer-motion"; const TopMateSection = ({ setShowTopmate }) => { - const { colorMode } = useSafeColorMode(); // Get current theme: 'light' or 'dark' + const { colorMode } = useSafeColorMode(); const profileData = { title: "1:1 Mentorship Call", @@ -14,28 +15,49 @@ const TopMateSection = ({ setShowTopmate }) => { }; return ( -
-
-
-

- Book a Session +
+ {/* Background Elements */} +
+
+
+
+ +
+ +
+ + ✨ Personal Mentorship + +
+

+ Book a Session

-

- Get personalized guidance and feedback through one-on-one sessions +

+ Get personalized guidance and feedback through one-on-one sessions with industry experts

-
+ -
+ -
+
); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2a8a456d..e3368cbf 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -87,13 +87,13 @@ export default function Home(): ReactNode {
-
+
{showTopmate && ( -
+
)} -
+