From 221ea3057be4677c971ed73fd83b4afd2235390d Mon Sep 17 00:00:00 2001 From: Meenadeveloper Date: Mon, 24 Nov 2025 18:40:48 +0530 Subject: [PATCH] dashboard --- .../profiledashboard/DailyRecommendedCard.jsx | 316 ++++++++++++++++++ .../profiledashboard/MatchingList.jsx | 140 ++++++++ .../profiledashboard/MatrimonyArticles.jsx | 79 +++++ .../profiledashboard/PaidMemberCard.jsx | 61 ++++ .../profiledashboard/ProfileCompletion.jsx | 168 ++++++++++ src/pages/UserDashboardHome.jsx | 110 +++++- 6 files changed, 871 insertions(+), 3 deletions(-) create mode 100644 src/components/profiledashboard/DailyRecommendedCard.jsx create mode 100644 src/components/profiledashboard/MatchingList.jsx create mode 100644 src/components/profiledashboard/MatrimonyArticles.jsx create mode 100644 src/components/profiledashboard/PaidMemberCard.jsx create mode 100644 src/components/profiledashboard/ProfileCompletion.jsx diff --git a/src/components/profiledashboard/DailyRecommendedCard.jsx b/src/components/profiledashboard/DailyRecommendedCard.jsx new file mode 100644 index 0000000..a7c966c --- /dev/null +++ b/src/components/profiledashboard/DailyRecommendedCard.jsx @@ -0,0 +1,316 @@ +import React, { useRef } from 'react'; +import { motion } from 'framer-motion'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import { Navigation, Pagination, Autoplay, EffectCoverflow } from 'swiper/modules'; +import { Crown, Bookmark, User, Briefcase, MapPin, X, Send, ChevronLeft, ChevronRight } from 'lucide-react'; + +// Import Swiper styles +import 'swiper/css'; +import 'swiper/css/navigation'; +import 'swiper/css/pagination'; +import 'swiper/css/effect-coverflow'; + +const DailyRecommendedCard = () => { + const swiperRef = useRef(null); + + // Sample profile data + const profiles = [ + { + id: 1, + name: 'Selva Kumar . R', + userId: 'TK52586A', + lastSeen: '14 Nov 25', + age: 23, + height: '5\'2"', + religion: 'Hindu / Agamudayar / Thuluva Vellal', + education: 'BCA, Data Analyst', + location: 'Vellore, Tamil Nadu', + image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=500&fit=crop', + isPremium: true + }, + { + id: 2, + name: 'Priya Sharma', + userId: 'TK52587B', + lastSeen: '15 Nov 25', + age: 25, + height: '5\'4"', + religion: 'Hindu / Brahmin / Iyer', + education: 'MBA, Marketing Manager', + location: 'Chennai, Tamil Nadu', + image: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=500&fit=crop', + isPremium: true + }, + { + id: 3, + name: 'Rahul Venkat', + userId: 'TK52588C', + lastSeen: '16 Nov 25', + age: 28, + height: '5\'10"', + religion: 'Hindu / Mudaliar / Arcot', + education: 'B.Tech, Software Engineer', + location: 'Bangalore, Karnataka', + image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=500&fit=crop', + isPremium: false + }, + { + id: 4, + name: 'Aishwarya Reddy', + userId: 'TK52589D', + lastSeen: '17 Nov 25', + age: 26, + height: '5\'5"', + religion: 'Hindu / Reddy / Telangana', + education: 'CA, Chartered Accountant', + location: 'Hyderabad, Telangana', + image: 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=500&fit=crop', + isPremium: true + }, + { + id: 5, + name: 'Karthik Mohan', + userId: 'TK52590E', + lastSeen: '18 Nov 25', + age: 27, + height: '5\'8"', + religion: 'Hindu / Nadar / Tamil', + education: 'M.Tech, Civil Engineer', + location: 'Madurai, Tamil Nadu', + image: 'https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=400&h=500&fit=crop', + isPremium: false + }, + { + id: 6, + name: 'Divya Lakshmi', + userId: 'TK52591F', + lastSeen: '19 Nov 25', + age: 24, + height: '5\'3"', + religion: 'Hindu / Pillai / Tamil', + education: 'B.Com, HR Executive', + location: 'Coimbatore, Tamil Nadu', + image: 'https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=400&h=500&fit=crop', + isPremium: true + } + ]; + + // Profile Card Component + const ProfileCard = ({ profile }) => ( + + {/* Premium Badge */} + {profile.isPremium && ( + + + + )} + + {/* Shortlist Button */} + + + Shortlist + + + {/* Profile Image */} +
+ {profile.name} +
+
+ + {/* Profile Info */} +
+
+

{profile.name}

+

+ ID : {profile.userId} Last seen {profile.lastSeen} +

+
+ + {/* Details */} +
+
+ + {profile.age} Yrs, {profile.height} +
+ +
+
+
+
+ {profile.religion} +
+ +
+ + {profile.education} +
+ +
+ + {profile.location} +
+
+ + {/* Action Buttons */} +
+ + + Don't Show + Skip + + + + + Send Interest + Interest + +
+
+ + ); + + return ( +
+
+ {/* Header */} + +

+ Daily Recommended +

+

Find your perfect match today

+
+ + {/* Swiper Container */} +
+ + {profiles.map((profile) => ( + + + + ))} + + + {/* Custom Navigation Buttons */} + swiperRef.current?.swiper.slidePrev()} + className="hidden sm:flex absolute left-0 top-1/2 -translate-y-1/2 z-10 bg-white p-4 rounded-full shadow-xl hover:shadow-2xl items-center justify-center transition-all" + > + + + + swiperRef.current?.swiper.slideNext()} + className="hidden sm:flex absolute right-0 top-1/2 -translate-y-1/2 z-10 bg-white p-4 rounded-full shadow-xl hover:shadow-2xl items-center justify-center transition-all" + > + + +
+ + {/* View All Button */} + + + View All Recommendations + + +
+ + {/* Custom Swiper Styles */} + +
+ ); +}; + +export default DailyRecommendedCard; \ No newline at end of file diff --git a/src/components/profiledashboard/MatchingList.jsx b/src/components/profiledashboard/MatchingList.jsx new file mode 100644 index 0000000..c927ce1 --- /dev/null +++ b/src/components/profiledashboard/MatchingList.jsx @@ -0,0 +1,140 @@ +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper/modules"; +import "swiper/css"; +import "swiper/css/navigation"; +import { MapPin, User } from "lucide-react"; + + +const profiles = [ + { + name: "Selva Kumar . R", + id: "TK52586A", + lastSeen: "14 Nov 25", + age: "23 Yrs", + height: `5'2"`, + location: "Vellore, Tamil Nadu", + img: "https://images.unsplash.com/photo-1503341733017-1903baea046d?auto=format&fit=crop&w=800&q=80" + }, + { + name: "Arun Raj . M", + id: "TK88421B", + lastSeen: "10 Nov 25", + age: "27 Yrs", + height: `5'8"`, + location: "Chennai, Tamil Nadu", + img: "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?auto=format&fit=crop&w=800&q=80" + }, + { + name: "Dinesh Kumar", + id: "TK99214C", + lastSeen: "12 Nov 25", + age: "26 Yrs", + height: `5'6"`, + location: "Coimbatore, Tamil Nadu", + img: "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?auto=format&fit=crop&w=800&q=80" + }, + { + name: "Sathish . R", + id: "TK55221Z", + lastSeen: "15 Nov 25", + age: "24 Yrs", + height: `5'7"`, + location: "Salem, Tamil Nadu", + img: "https://images.unsplash.com/photo-1503341455253-b2e723bb3dbb?auto=format&fit=crop&w=800&q=80" + }, + { + name: "Sathish . R", + id: "TK55221Z", + lastSeen: "15 Nov 25", + age: "24 Yrs", + height: `5'7"`, + location: "Salem, Tamil Nadu", + img: "https://images.unsplash.com/photo-1503341455253-b2e723bb3dbb?auto=format&fit=crop&w=800&q=80" + }, + { + name: "Sathish . R", + id: "TK55221Z", + lastSeen: "15 Nov 25", + age: "24 Yrs", + height: `5'7"`, + location: "Salem, Tamil Nadu", + img: "https://images.unsplash.com/photo-1503341455253-b2e723bb3dbb?auto=format&fit=crop&w=800&q=80" + } +]; + +const MatchingList = () => { + return ( + <> +
+ + {profiles.map((p, i) => ( + +
+ {/* Image */} +
+ {p.name} + + {/* Crown Icon */} +
+ 👑 +
+
+ + {/* Content */} +
+

{p.name}

+ +

+ ID : {p.id} + + Last seen {p.lastSeen} + +

+ +
+ + + {p.age}, {p.height} + +
+ +
+ + {p.location} +
+
+
+
+ ))} +
+ + +
+ + ) +} + +export default MatchingList diff --git a/src/components/profiledashboard/MatrimonyArticles.jsx b/src/components/profiledashboard/MatrimonyArticles.jsx new file mode 100644 index 0000000..dc4ac64 --- /dev/null +++ b/src/components/profiledashboard/MatrimonyArticles.jsx @@ -0,0 +1,79 @@ +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper/modules"; +import "swiper/css"; +import "swiper/css/navigation"; + +const articleData = [ + { + title: "How to Choose the Right Life Partner", + img: "https://images.unsplash.com/photo-1529634806980-89c3b5aa0b3c?auto=format&fit=crop&w=800&q=80", + }, + { + title: "Top 10 Qualities for a Happy Marriage", + img: "https://images.unsplash.com/photo-1519741497674-611481863552?auto=format&fit=crop&w=800&q=80", + }, + { + title: "Expert Tips for a Strong Relationship", + img: "https://images.unsplash.com/photo-1509587584298-0f3b3d8f7c77?auto=format&fit=crop&w=800&q=80", + }, + { + title: "How to Build Trust in Marriage", + img: "https://images.unsplash.com/photo-1504196606672-aef5c9cefc92?auto=format&fit=crop&w=800&q=80", + }, + { + title: "Communication Secrets for Couples", + img: "https://images.unsplash.com/photo-1523580846011-d3a5bc25702b?auto=format&fit=crop&w=800&q=80", + }, +]; +const MatrimonyArticles = () => { + return ( + <> +
+

+ Matrimony Articles +

+ + + {articleData.map((item, index) => ( + +
+ {item.title} +
+

{item.title}

+
+
+
+ ))} +
+ + +
+ + ) +} + +export default MatrimonyArticles diff --git a/src/components/profiledashboard/PaidMemberCard.jsx b/src/components/profiledashboard/PaidMemberCard.jsx new file mode 100644 index 0000000..bb66fa6 --- /dev/null +++ b/src/components/profiledashboard/PaidMemberCard.jsx @@ -0,0 +1,61 @@ + +const PaidMemberCard = () => { + return ( + <> +
+
+ + {/* Left Content */} +
+

+ Become a paid member +

+ +

+ Get up to 58% OFF on paid membership! +

+ + {/* Features */} +
    +
  • + 📞 + Call/WhatsApp matches +
  • + +
  • + 💬 + Unlimited messages +
  • + +
  • + 👍 + Higher chances of response +
  • + +
  • + 🔍 + View and match horoscopes +
  • +
+ + {/* Button */} + +
+ + {/* Right Side Image */} +
+ Paid Member Offer +
+
+
+ + ) +} + +export default PaidMemberCard diff --git a/src/components/profiledashboard/ProfileCompletion.jsx b/src/components/profiledashboard/ProfileCompletion.jsx new file mode 100644 index 0000000..f5249b2 --- /dev/null +++ b/src/components/profiledashboard/ProfileCompletion.jsx @@ -0,0 +1,168 @@ +import React, { useState } from 'react'; +import { motion } from 'framer-motion'; +import { Camera, Sparkles, Users } from 'lucide-react'; +const ProfileCompletion = () => { + + const [completeness, setCompleteness] = useState(30); + + const cards = [ + { + id: 1, + icon: Camera, + title: 'Add Photo(s)', + bgColor: 'bg-green-50', + iconColor: 'text-green-600', + borderColor: 'border-green-200' + }, + { + id: 2, + icon: Sparkles, + title: 'Add Horoscope', + bgColor: 'bg-purple-50', + iconColor: 'text-purple-600', + borderColor: 'border-purple-200' + }, + { + id: 3, + icon: Users, + title: 'Family Details', + bgColor: 'bg-orange-50', + iconColor: 'text-orange-600', + borderColor: 'border-orange-200' + } + ]; + + const container = { + hidden: { opacity: 0 }, + show: { + opacity: 1, + transition: { + staggerChildren: 0.1 + } + } + }; + + const item = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0 } + }; + return ( + <> +
+ + {/* Header Section */} +
+ + Complete Your Profile + + + {/* Progress Bar Section */} + +
+ + Profile completeness score + + + {completeness}% + +
+ + {/* Progress Bar */} +
+ +
+
+
+ + {/* Cards Section */} + + {cards.map((card, index) => ( + +
+ {/* Icon Container */} + + + + + {/* Text */} + + {card.title} + +
+ + {/* Hover indicator */} + + + ))} +
+ + {/* Additional Info Section */} + +

+ Complete your profile to increase visibility and get better matches +

+
+
+
+ + ) +} + +export default ProfileCompletion diff --git a/src/pages/UserDashboardHome.jsx b/src/pages/UserDashboardHome.jsx index 53f8b49..59f39d4 100644 --- a/src/pages/UserDashboardHome.jsx +++ b/src/pages/UserDashboardHome.jsx @@ -3,6 +3,11 @@ import { Navigation, Autoplay } from 'swiper/modules'; import { ChevronLeft, ChevronRight } from 'lucide-react'; import 'swiper/css'; import 'swiper/css/navigation'; +import ProfileCompletion from '../components/profiledashboard/ProfileCompletion'; +import DailyRecommendedCard from '../components/profiledashboard/DailyRecommendedCard'; +import MatrimonyArticles from '../components/profiledashboard/MatrimonyArticles'; +import MatchingList from '../components/profiledashboard/MatchingList'; +import PaidMemberCard from '../components/profiledashboard/PaidMemberCard'; const images = [ @@ -20,7 +25,7 @@ const images = [ const UserDashboardHome = () => { return ( <> -
+
{/* Left Arrow */}
- + `} */} + +
+ + + + + + ) }