@@ -47,7 +49,7 @@ const PaidMemberCard = () => {
{/* Right Side Image */}
diff --git a/src/components/profiledashboard/ProfileCompletion.jsx b/src/components/profiledashboard/ProfileCompletion.jsx
index f5249b2..518dc78 100644
--- a/src/components/profiledashboard/ProfileCompletion.jsx
+++ b/src/components/profiledashboard/ProfileCompletion.jsx
@@ -1,35 +1,43 @@
-import React, { useState } from 'react';
-import { motion } from 'framer-motion';
-import { Camera, Sparkles, Users } from 'lucide-react';
-const ProfileCompletion = () => {
+import React, { useState } from "react";
+import { motion } from "framer-motion";
+import LazyImage from "../common/LazyImage";
+import ProfileIcon from "../../assets/images/profileicon.png";
+import HoroscodeIcon from "../../assets/images/horoscopericon.png";
+import FamilyIcon from "../../assets/images/homeicon.png";
+import Box from "@mui/material/Box";
+import { useNavigate } from "react-router-dom";
+import AstroChatUI from "./AstroChatUI";
+import MembershipCard from "./MembershipCard";
- const [completeness, setCompleteness] = useState(30);
+const ProfileCompletion = () => {
+ const [completeness, setCompleteness] = useState(30);
+ const navigate = useNavigate();
const cards = [
{
id: 1,
- icon: Camera,
- title: 'Add Photo(s)',
- bgColor: 'bg-green-50',
- iconColor: 'text-green-600',
- borderColor: 'border-green-200'
+ icon: ProfileIcon,
+ 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'
+ icon: HoroscodeIcon,
+ 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'
- }
+ icon: FamilyIcon,
+ title: "Family Details",
+ bgColor: "bg-orange-50",
+ iconColor: "text-orange-600",
+ borderColor: "border-orange-200",
+ },
];
const container = {
@@ -37,132 +45,143 @@ const ProfileCompletion = () => {
show: {
opacity: 1,
transition: {
- staggerChildren: 0.1
- }
- }
+ staggerChildren: 0.1,
+ },
+ },
};
const item = {
hidden: { opacity: 0, y: 20 },
- show: { opacity: 1, y: 0 }
+ 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 */}
-
-
-
+ Complete Your Profile
+
- {/* Text */}
-
+
+
+ Profile completeness score
+
+
- {card.title}
-
+ {completeness}%
+
- {/* Hover indicator */}
-
+ {/* Progress Bar */}
+
+
+
- ))}
-
+
- {/* Additional Info Section */}
-
-
- Complete your profile to increase visibility and get better matches
-
+ {/* Cards Section */}
+
+
+ {/* Desktop Logo */}
+ {/*
+
+ */}
+
+
+
+
+
+ {cards.map((card, index) => (
+
+
+ {/* Icon Container */}
+
+
+
+
+ {/* Text */}
+
+ {card.title}
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+ {/* Additional Info Section */}
+
+
+ Complete your profile to increase visibility and get better matches
+
+
-
-
+
>
- )
-}
+ );
+};
-export default ProfileCompletion
+export default ProfileCompletion;
diff --git a/src/components/profiledashboard/VideoSwiperGallery.jsx b/src/components/profiledashboard/VideoSwiperGallery.jsx
new file mode 100644
index 0000000..31dd14a
--- /dev/null
+++ b/src/components/profiledashboard/VideoSwiperGallery.jsx
@@ -0,0 +1,365 @@
+import React, { useState, useRef } from 'react';
+import { motion } from 'framer-motion';
+import { Swiper, SwiperSlide } from 'swiper/react';
+import { Navigation, Pagination, Autoplay } from 'swiper/modules';
+import { Play, X, Heart, Share2, Eye, ChevronLeft, ChevronRight } from 'lucide-react';
+
+// Import Swiper styles
+import 'swiper/css';
+import 'swiper/css/navigation';
+import 'swiper/css/pagination';
+
+const VideoSwiperGallery = () => {
+ const [selectedVideo, setSelectedVideo] = useState(null);
+ const swiperRef = useRef(null);
+
+ // Video data with online sources
+ const videos = [
+ {
+ id: 1,
+ title: 'Priya & Rahul - Wedding Story',
+ thumbnail: 'https://images.unsplash.com/photo-1519741497674-611481863552?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
+ views: '2.4K',
+ likes: '142',
+ duration: '3:45'
+ },
+ {
+ id: 2,
+ title: 'Aisha - Profile Introduction',
+ thumbnail: 'https://images.unsplash.com/photo-1606216794079-e48e3e2a3f6a?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
+ views: '1.8K',
+ likes: '98',
+ duration: '2:30'
+ },
+ {
+ id: 3,
+ title: 'Rohan - Life Journey',
+ thumbnail: 'https://images.unsplash.com/photo-1511285560929-80b456fea0bc?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4',
+ views: '3.2K',
+ likes: '256',
+ duration: '4:15'
+ },
+ {
+ id: 4,
+ title: 'Divya - Family Values',
+ thumbnail: 'https://images.unsplash.com/photo-1522673607200-164d1b6ce486?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4',
+ views: '1.5K',
+ likes: '87',
+ duration: '3:00'
+ },
+ {
+ id: 5,
+ title: 'Karthik & Meera - First Meet',
+ thumbnail: 'https://images.unsplash.com/photo-1583939003579-730e3918a45a?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4',
+ views: '4.1K',
+ likes: '312',
+ duration: '5:20'
+ },
+ {
+ id: 6,
+ title: 'Sneha - Hobbies & Interests',
+ thumbnail: 'https://images.unsplash.com/photo-1465495976277-4387d4b0b4c6?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4',
+ views: '2.7K',
+ likes: '178',
+ duration: '2:45'
+ },
+ {
+ id: 7,
+ title: 'Arjun - Career & Dreams',
+ thumbnail: 'https://images.unsplash.com/photo-1492691527719-9d1e07e534b4?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4',
+ views: '1.9K',
+ likes: '134',
+ duration: '3:30'
+ },
+ {
+ id: 8,
+ title: 'Lakshmi - Traditional Values',
+ thumbnail: 'https://images.unsplash.com/photo-1606216794074-735e91aa2c92?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4',
+ views: '3.5K',
+ likes: '267',
+ duration: '4:00'
+ },
+ {
+ id: 9,
+ title: 'Vikram - Adventure Life',
+ thumbnail: 'https://images.unsplash.com/photo-1519167758481-83f29da8c4f3?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
+ views: '5.2K',
+ likes: '423',
+ duration: '4:30'
+ },
+ {
+ id: 10,
+ title: 'Anjali - Creative Journey',
+ thumbnail: 'https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?w=600&h=400&fit=crop',
+ videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',
+ views: '3.8K',
+ likes: '289',
+ duration: '3:15'
+ }
+ ];
+
+ const VideoCard = ({ video }) => {
+ const [isHovered, setIsHovered] = useState(false);
+
+ return (
+
setIsHovered(true)}
+ onMouseLeave={() => setIsHovered(false)}
+ onClick={() => setSelectedVideo(video)}
+ >
+
+ {/* Thumbnail */}
+
+
+
+ {/* Overlay */}
+
+
+ {/* Play Button */}
+
+
+
+
+ {/* Duration Badge */}
+
+ {video.duration}
+
+
+ {/* Stats at bottom */}
+
+
+ {video.title}
+
+
+
+
+ {video.views}
+
+
+
+ {video.likes}
+
+
+
+
+
+
+ );
+ };
+
+ // Video Modal
+ const VideoModal = () => {
+ if (!selectedVideo) return null;
+
+ return (
+
setSelectedVideo(null)}
+ >
+ e.stopPropagation()}
+ >
+ {/* Close Button */}
+ setSelectedVideo(null)}
+ className="absolute -top-12 right-0 text-white hover:text-gray-300 transition-colors"
+ >
+
+
+
+ {/* Video Player */}
+
+
+ Your browser does not support the video tag.
+
+
+ {/* Video Info */}
+
+
+ {selectedVideo.title}
+
+
+
+
+ {selectedVideo.views} views
+
+
+
+ {selectedVideo.likes} likes
+
+
+
+ Share
+
+
+
+
+
+
+ );
+ };
+
+ return (
+
+
+ {/* Header */}
+
+
+ Video Gallery
+
+
+ Discover profiles through their stories
+
+
+
+ {/* Swiper Container */}
+
+
+ {videos.map((video) => (
+
+
+
+ ))}
+
+
+ {/* Custom Navigation Buttons */}
+ {/* 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/20 backdrop-blur-sm rounded-full flex items-center justify-center hover:bg-white/30 transition-all
+ w-12 h-12 rounded-full shadow-xl hover:shadow-2xl items-center justify-center "
+ >
+
+
+
+ swiperRef.current?.swiper.slideNext()}
+ className="hidden sm:flex absolute right-0 top-1/2 -translate-y-1/2 z-10
+ bg-white/20 backdrop-blur-sm rounded-full flex items-center justify-center hover:bg-white/30 transition-all
+ w-12 h-12 rounded-full shadow-xl hover:shadow-2xl items-center justify-center transition-all"
+ >
+
+
+
+
+ {/* View All Button */}
+
+
+ View All Videos
+
+
+
+
+ {/* Video Modal */}
+ {selectedVideo &&
}
+
+ {/* Custom Swiper Styles */}
+
+
+ );
+};
+
+export default VideoSwiperGallery;
\ No newline at end of file
diff --git a/src/components/profiledetail/MatrimonyProfile.jsx b/src/components/profiledetail/MatrimonyProfile.jsx
new file mode 100644
index 0000000..35bf194
--- /dev/null
+++ b/src/components/profiledetail/MatrimonyProfile.jsx
@@ -0,0 +1,725 @@
+import React, { useState, useRef } from "react";
+import {
+ Heart,
+ X,
+ ChevronRight,
+ SkipForward,
+ Bookmark,
+ MessageCircle,
+ Ban,
+ Flag,
+ ChevronLeft,
+} from "lucide-react";
+
+// Import Swiper React components and styles
+import { Swiper, SwiperSlide } from "swiper/react";
+import { Navigation, Pagination, Thumbs } from "swiper/modules";
+import "swiper/css";
+import "swiper/css/navigation";
+import "swiper/css/pagination";
+import "swiper/css/thumbs";
+
+const MatrimonyProfile = () => {
+ const [isModalOpen, setIsModalOpen] = useState(false);
+ const [showMenu, setShowMenu] = useState(false);
+ const [thumbsSwiper, setThumbsSwiper] = useState(null);
+ const mainSwiperRef = useRef(null);
+ const modalSwiperRef = useRef(null);
+
+ const profile = {
+ name: "Sudharshan M",
+ id: "M8355880",
+ verified: true,
+ lastSeen: "Last seen few hour ago",
+ age: "30 yrs",
+ height: "5'5\"",
+ caste: "Brahmin",
+ education: "Engineer - Non IT",
+ location: "Chennai",
+ maritalStatus: "Never Married",
+ createdBy: "Profile created by sibling",
+ images: [
+ "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=600&h=800&fit=crop",
+ "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=600&h=800&fit=crop",
+ "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=600&h=800&fit=crop",
+ "https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?w=600&h=800&fit=crop",
+ "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=600&h=800&fit=crop",
+ ],
+ };
+
+ const openModal = (index) => {
+ setIsModalOpen(true);
+ setTimeout(() => {
+ if (modalSwiperRef.current) {
+ modalSwiperRef.current.slideTo(index);
+ }
+ }, 100);
+ };
+
+ return (
+
+
+
+ {/* Image Section with Swiper */}
+
+
+
{
+ mainSwiperRef.current = swiper;
+ }}
+ className="h-full w-full"
+ >
+ {profile.images.map((img, idx) => (
+
+ openModal(idx)}
+ >
+
+
+
+ ))}
+
+
+ {/* Swiper Navigation Buttons */}
+
+
+
+
+
+
+
+ {/* Pagination */}
+ {/*
*/}
+
+ {/* Thumbnail Navigation */}
+ {/*
+ {profile.images.slice(0, 4).map((img, idx) => (
+
mainSwiperRef.current?.slideTo(idx)}
+ >
+
+
+ ))}
+
*/}
+
+
+
+ {/* Profile Details Section */}
+
+
+
+
+
setShowMenu(!showMenu)}
+ className="p-2 hover:bg-gray-100 rounded-full transition-colors"
+ >
+
+
+
+
+ {showMenu && (
+
+
+ Shortlist
+
+
+ Send Message
+
+
+ Block Profile
+
+
+ Report Profile
+
+
+ )}
+
+
+
+
+ {profile.name}
+
+
+ {profile.id} | {profile.lastSeen}
+
+
+
+
+ {profile.maritalStatus}
+ •
+
+ {profile.createdBy}
+
+ •
+ {profile.age}
+ •
+ {profile.height}
+ •
+ {profile.caste}
+
+
+ {profile.education}
+ •
+ {profile.location}
+
+
+
+ {/* Action Buttons */}
+
+
+ Don't Show
+
+ {/*
+ Skip
+ */}
+
+ Send Interest
+
+
+
+
+
+
+ {/* Image Modal with Swiper */}
+ {isModalOpen && (
+
+
setIsModalOpen(false)}
+ className="absolute top-4 right-4 text-white bg-black/20 rounded-full p-2 hover:bg-black/70 transition-colors z-20"
+ >
+
+
+
+
+
+
+ {/* Main Modal Swiper */}
+
+
{
+ modalSwiperRef.current = swiper;
+ }}
+ className="h-full w-full"
+ >
+ {profile.images.map((img, idx) => (
+
+
+
+
+
+ ))}
+
+
+ {/* Modal Navigation Buttons */}
+
+
+
+
+
+
+
+
+
+
+ {/* Top Info Bar */}
+
+
+
+
+
{profile.name}
+
+ {profile.id} | {profile.createdBy}
+
+
+ {profile.age} • {profile.height} • {profile.caste} • BE
+ • {profile.education} • {profile.location}
+
+
+
+
+
+ {/* Thumbnail Swiper */}
+
+ {profile.images.map((img, idx) => (
+
+
+
+
+
+ ))}
+
+
+ {/* Bottom Action Bar */}
+
+
+ Like this member?
+
+
+ Send Interest
+
+
+
+
+
+
+ )}
+
+
+ {/* Personal Information Section */}
+
+
+
+
Personal Information
+
+
+
+
+ Age
+ :
+ 30 Years and 8 months
+
+
+ Height
+ :
+ 5'5"
+
+
+ Weight
+ :
+ 97 Kg
+
+
+ Body Type
+ :
+ Average
+
+
+ Spoken Languages
+ :
+
+ Tamil (Mother Tongue), English, Hindi
+
+
+
+ Profile Created By
+ :
+ Sibling
+
+
+ Marital Status
+ :
+ Never Married
+
+
+ Lives In
+ :
+ Chennai, Tamil Nadu
+
+
+ Eating Habits
+ :
+ Vegetarian
+
+
+ Religion
+ :
+ Hindu
+
+
+ Caste
+ :
+ Brahmin - Iyer
+
+
+ Subcaste
+ :
+ Brahacharmam
+
+
+ Gothra(m)
+ :
+ Kashyapa / Kaashyapa
+
+
+ Dosha(m)
+ :
+ Don't know
+
+
+
Date Of Birth
+
:
+
+
+
+
+
+ Upgrade to view
+
+
+
+
Star
+
:
+
+
+
+
+
+ Upgrade to view
+
+
+
+
Rassi
+
:
+
+
+
+
+
+ Upgrade to view
+
+
+
+
Horoscope
+
:
+
+
+
+
+
+ Upgrade to view
+
+
+
+ Employment
+ :
+ Employed in private
+
+
+ Income
+ :
+ ₹ 4 - 5 Lakhs
+
+
+ Education
+ :
+ BE
+
+
+ Occupation
+ :
+ Engineer - Non IT
+
+
+
+
+ {/* Family Information Section */}
+
+
+
+
+
+ Parents
+ :
+
+ Father Passed Away, Mother is a Home Maker
+
+
+
+ Ancestral Origin
+ :
+ Rameshwaram
+
+
+ {/* Contact Information Section */}
+
+
+
+
Contact Information
+
+
+
+
+
Mobile Number
+
:
+
+
+
+
+
+
+
+
+91 99••••••••
+
+ Upgrade to view
+
+
+
+
+
+
+ {/* About Myself Section */}
+
+
+
+
+
+
+ About Sudharshan M
+
+
+ I am making this profile for my brother. He completed his
+ bachelor's degree and is now working as a project engineer -
+ non IT. We belong to a middle class, nuclear family with
+ traditional values, currently settled in Chennai.
+
+
+
+
+ What we are looking for
+
+
+ Traditional, homely girl with moderate values
+
+
+
+
+
+ {/* Lifestyle Section */}
+
+
+
+
+
+ Cuisine
+ :
+
+ Chinese, North Indian, South Indian
+
+
+
+ Books
+ :
+
+ History, Philosophy / Spiritual
+
+
+
+ Hobbies
+ :
+ Cooking
+
+
+ Movies
+ :
+
+ Anime, Comedy, Sci-Fi
+
+
+
+ Sports
+ :
+ Yoga / Meditation
+
+
+ Smoking Habits
+ :
+ Doesn't Smoke
+
+
+ Drinking Habits
+ :
+ Doesn't Drink
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default MatrimonyProfile;
diff --git a/src/components/profiledetail/PartnerPreferences.jsx b/src/components/profiledetail/PartnerPreferences.jsx
new file mode 100644
index 0000000..b77a3ae
--- /dev/null
+++ b/src/components/profiledetail/PartnerPreferences.jsx
@@ -0,0 +1,116 @@
+import React from 'react';
+import { Check, X } from 'lucide-react';
+
+const PartnerPreferences = () => {
+ const basicPreferences = [
+ { label: "Preferred Bride's Age", value: "22-29 yrs", match: true },
+ { label: "Preferred Height", value: "5'0\" - 5'5\"", match: false },
+ { label: "Preferred Marital Status", value: "Never Married", match: true },
+ { label: "Preferred Mother Tongue", value: "Tamil", match: true },
+ { label: "Preferred Physical Status", value: "Normal", match: true },
+ { label: "Preferred Eating Habits", value: "Vegetarian", match: false },
+ { label: "Preferred Smoking Habits", value: "Doesn't Matter", match: true },
+ { label: "Preferred Drinking Habits", value: "Doesn't Matter", match: true },
+ ];
+
+ const religiousPreferences = [
+ { label: "Preferred Religion", value: "Hindu", match: true },
+ { label: "Preferred Caste", value: "Brahmin - Iyer", match: false },
+ { label: "Preferred Subcaste", value: "Any", match: false },
+ { label: "Preferred Star", value: "Any", match: true },
+ { label: "Preferred Dosham", value: "No Dosham", match: true },
+ ];
+
+ const PreferenceItem = ({ label, value, match }) => (
+
+
{label}
+
{value}
+
+ {match ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+ );
+
+ return (
+
+
+ {/* Header */}
+
+
+ ✨
+ His Partner Preferences
+ ✨
+
+
+
+ {/* Match Score Card */}
+
+
+
+
+
+
You match
+
+ 14/20
+
+
of his preferences
+
+
+
+
+
+
+ {/* Basic Preferences Section */}
+
+
+
+ {basicPreferences.map((pref, index) => (
+
+ ))}
+
+
+
+ {/* Religious Preferences Section */}
+
+
Religious Preferences
+
+ {religiousPreferences.map((pref, index) => (
+
+ ))}
+
+
+
+ {/* Footer Note */}
+
+
Preferences are used to find compatible matches
+
+
+
+ );
+};
+
+export default PartnerPreferences;
\ No newline at end of file
diff --git a/src/pages/AccountSettingsPage.jsx b/src/pages/AccountSettingsPage.jsx
new file mode 100644
index 0000000..8b72c09
--- /dev/null
+++ b/src/pages/AccountSettingsPage.jsx
@@ -0,0 +1,347 @@
+import * as React from 'react';
+import PropTypes from 'prop-types';
+import Tabs from '@mui/material/Tabs';
+import Tab from '@mui/material/Tab';
+import Typography from '@mui/material/Typography';
+import Box from '@mui/material/Box';
+import Switch from '@mui/material/Switch';
+import useMediaQuery from '@mui/material/useMediaQuery';
+import { useTheme } from '@mui/material/styles';
+import { Phone, MessageSquare, Shield, Bell, UserCheck, ChevronLeft } from 'lucide-react';
+
+function TabPanel(props) {
+ const { children, value, index, ...other } = props;
+
+ return (
+
+ {value === index && (
+
+ {children}
+
+ )}
+
+ );
+}
+
+TabPanel.propTypes = {
+ children: PropTypes.node,
+ index: PropTypes.number.isRequired,
+ value: PropTypes.number.isRequired,
+};
+
+function a11yProps(index, isMobile) {
+ return {
+ id: `${isMobile ? 'horizontal' : 'vertical'}-tab-${index}`,
+ 'aria-controls': `${isMobile ? 'horizontal' : 'vertical'}-tabpanel-${index}`,
+ };
+}
+
+const SettingItem = ({ title, description, enabled, onToggle }) => (
+
+
+
+ {title}
+
+
+
+
+ {description}
+
+
+);
+
+const TabContent = ({ title, settings, states, onToggle }) => (
+
+
+
+ {title}
+
+
+
+ {settings.map((setting, index) => (
+ onToggle(setting.key)}
+ />
+ ))}
+
+
+);
+
+export default function AccountSettingPage() {
+ const theme = useTheme();
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
+ const [value, setValue] = React.useState(0);
+ const [settings, setSettings] = React.useState({
+ phoneVisibility: true,
+ chatAlertsNotification: true,
+ chatProtection: true,
+ protectProfilePhoto: true,
+ callProtection: true,
+ matchAlerts: true,
+ profileViews: false,
+ messagePermission: true,
+ blockUnverified: false,
+ });
+
+ const handleChange = (event, newValue) => {
+ setValue(newValue);
+ };
+
+ const toggleSetting = (key) => {
+ setSettings(prev => ({ ...prev, [key]: !prev[key] }));
+ };
+
+ const tabs = [
+ {
+ id: 0,
+ label: 'Phone Number',
+ fullLabel: 'Phone Number Visibility Controls',
+ icon:
,
+ settings: [
+ {
+ key: 'phoneVisibility',
+ title: 'Phone Number Visibility',
+ description: 'You can control phone number visibility through temporary and permanent methods on your phone. For a single call, dial *67 before the number.',
+ },
+ ],
+ },
+ {
+ id: 1,
+ label: 'Chat Alerts',
+ fullLabel: 'Chat Alerts',
+ icon:
,
+ settings: [
+ {
+ key: 'chatAlertsNotification',
+ title: 'Chat Alerts Notification',
+ description: 'Matrimony sites send chat alerts with standard, automated content to notify you of new interactions related to your profile.',
+ },
+ {
+ key: 'chatProtection',
+ title: 'Chat Protection',
+ description: 'To protect yourself while using matrimonial sites, the primary "chat protection content" is restricting the personal and sensitive information you share both on your public profile and in early conversations.',
+ },
+ ],
+ },
+ {
+ id: 2,
+ label: 'Profile',
+ fullLabel: 'Profile Protection',
+ icon:
,
+ settings: [
+ {
+ key: 'protectProfilePhoto',
+ title: 'Protect Profile photo to all',
+ description: 'The photograph privacy settings options are available in the \'My Photos\' section of the \'My Profile\' page.',
+ },
+ {
+ key: 'callProtection',
+ title: 'Call Protection',
+ description: 'To implement call protection, most major matrimony sites offer built-in privacy features that allow you to control who sees your contact details and photos.',
+ },
+ ],
+ },
+ {
+ id: 3,
+ label: 'Match Alerts',
+ fullLabel: 'Match Alerts Preferences',
+ icon:
,
+ settings: [
+ {
+ key: 'matchAlerts',
+ title: 'Match Alert Notifications',
+ description: 'Receive notifications when new profiles match your preferences and requirements.',
+ },
+ {
+ key: 'profileViews',
+ title: 'Profile View Alerts',
+ description: 'Get notified when someone views your profile or shows interest in connecting with you.',
+ },
+ ],
+ },
+ {
+ id: 4,
+ label: 'Messages',
+ fullLabel: 'Who Can Message Me?',
+ icon:
,
+ settings: [
+ {
+ key: 'messagePermission',
+ title: 'Message Permissions',
+ description: 'Control who can send you messages. You can restrict messages to only verified profiles or profiles that match your preferences.',
+ },
+ {
+ key: 'blockUnverified',
+ title: 'Block Unverified Profiles',
+ description: 'Automatically block messages from profiles that haven\'t completed verification process.',
+ },
+ ],
+ },
+ ];
+
+ return (
+
+ {/* Desktop: Vertical Sidebar */}
+ {!isMobile && (
+
+
+
+ Settings
+
+
+
+ {tabs.map((tab, index) => (
+
+ ))}
+
+
+ )}
+
+ {/* Mobile: Horizontal Tabs */}
+ {isMobile && (
+
+
+
+ Settings
+
+
+
+ {tabs.map((tab, index) => (
+
+ ))}
+
+
+ )}
+
+ {/* Tab Content */}
+
+ {tabs.map((tab, index) => (
+
+
+
+ ))}
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/BlockedProfileListPage.jsx b/src/pages/BlockedProfileListPage.jsx
new file mode 100644
index 0000000..67d4625
--- /dev/null
+++ b/src/pages/BlockedProfileListPage.jsx
@@ -0,0 +1,340 @@
+import React, { useState } from 'react';
+import { Tabs, Tab, Box, Chip } from '@mui/material';
+import { CheckCircle, Phone, ExpandMore } from '@mui/icons-material';
+import { ChevronDown } from 'lucide-react';
+
+const BlockedProfile = ({ profile }) => (
+
+
+
+
+
+
+
+
+
+
+
+
+ Verified
+
+
+
{profile.name}
+
{profile.id} | Profile Created by Parent
+
+
+
{profile.age} yrs, {profile.height}, {profile.language},
+
{profile.location},
+
{profile.education}, {profile.occupation}, ₹ {profile.income}, {profile.state}, India
+
+
+
+
+
+
You have blocked this profile
+
+ UnBlock
+
+
+
+);
+
+const ReportedProfile = ({ profile, onViewReason }) => {
+ return (
+
+
+
+
+
+
+
{profile.name}
+
+ ID : {profile.id} Last seen {profile.lastSeen}
+
+
+
+
+ •
+ Profile created by Parent
+ •
+ {profile.age} yrs
+
+
+ •
+ {profile.caste}
+
+
+ •
+ {profile.occupation}
+ •
+ {profile.location}
+
+
+
+
onViewReason(profile)}
+ className="flex items-center gap-1 text-red-500 hover:text-red-600 mt-3 text-sm font-medium transition-colors"
+ >
+ View Report Reason
+
+
+
+
+
+ );
+};
+
+const ReportReasonModal = ({ profile, onClose }) => {
+ if (!profile) return null;
+
+ return (
+
+
+
+
+
+
{profile.name}
+
ID : {profile.id}
+
+
+
+
+
Reason For Report
+
+ {profile.reportReason}
+
+
+
+
+
+ Close
+
+
+
+
+
+ );
+};
+
+
+function BlockedProfileListPage() {
+ const [activeTab, setActiveTab] = useState(0);
+ const [selectedReport, setSelectedReport] = useState(null);
+ const blockedProfiles = [
+ {
+ id: 'M6075010',
+ name: 'Aravindh Vinayak M',
+ age: 37,
+ height: "5'6\"",
+ language: 'Tamil',
+ location: 'Karuneegar',
+ education: 'BE',
+ occupation: 'Clerk',
+ income: '9 - 10 Lakhs',
+ state: 'Tamil Nadu',
+ image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=300&h=300&fit=crop'
+ },
+ {
+ id: 'M6075010',
+ name: 'Aravindh Vinayak M',
+ age: 37,
+ height: "5'6\"",
+ language: 'Tamil',
+ location: 'Karuneegar',
+ education: 'BE',
+ occupation: 'Clerk',
+ income: '9 - 10 Lakhs',
+ state: 'Tamil Nadu',
+ image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=300&h=300&fit=crop'
+ },
+ {
+ id: 'M6075010',
+ name: 'Aravindh Vinayak M',
+ age: 37,
+ height: "5'6\"",
+ language: 'Tamil',
+ location: 'Karuneegar',
+ education: 'BE',
+ occupation: 'Clerk',
+ income: '9 - 10 Lakhs',
+ state: 'Tamil Nadu',
+ image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=300&h=300&fit=crop'
+ },
+ {
+ id: 'M6075010',
+ name: 'Aravindh Vinayak M',
+ age: 37,
+ height: "5'6\"",
+ language: 'Tamil',
+ location: 'Karuneegar',
+ education: 'BE',
+ occupation: 'Clerk',
+ income: '9 - 10 Lakhs',
+ state: 'Tamil Nadu',
+ image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=300&h=300&fit=crop'
+ }
+ ];
+
+ const reportedProfiles = [
+ {
+ id: 'TK52586A',
+ name: 'Pavilash . P',
+ age: 23,
+ lastSeen: 'Nov 25',
+ caste: 'Agamudayar / Arcot / Thuluva vellala',
+ occupation: 'Engineer-non – IT',
+ location: 'Chennai',
+ image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=300&h=400&fit=crop',
+ showReason: true,
+ reportReason: 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.'
+ },
+ {
+ id: 'TK52586A',
+ name: 'Pavilash . P',
+ age: 23,
+ lastSeen: 'Nov 25',
+ caste: 'Agamudayar / Arcot / Thuluva vellala',
+ occupation: 'Engineer-non – IT',
+ location: 'Chennai',
+ image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=300&h=400&fit=crop',
+ showReason: true,
+ reportReason: 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.'
+ },
+ {
+ id: 'TK52586A',
+ name: 'Pavilash . P',
+ age: 23,
+ lastSeen: 'Nov 25',
+ caste: 'Agamudayar / Arcot / Thuluva vellala',
+ occupation: 'Engineer-non – IT',
+ location: 'Chennai',
+ image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=300&h=400&fit=crop',
+ showReason: true,
+ reportReason: 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.'
+ },
+ {
+ id: 'TK52586A',
+ name: 'Pavilash . P',
+ age: 23,
+ lastSeen: 'Nov 25',
+ caste: 'Agamudayar / Arcot / Thuluva vellala',
+ occupation: 'Engineer-non – IT',
+ location: 'Chennai',
+ image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=300&h=400&fit=crop',
+ showReason: true,
+ reportReason: 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.'
+ }
+ ];
+
+ const handleTabChange = (event, newValue) => {
+ setActiveTab(newValue);
+ };
+
+ return (
+
+
+
Blocked & Reported Profiles
+
+
+
+
+
+
+
+
+
+ {activeTab === 0 && (
+
+ {blockedProfiles.map((profile, index) => (
+
+ ))}
+
+ )}
+
+ {activeTab === 1 && (
+
+ {reportedProfiles.map((profile, index) => (
+
+ ))}
+
+
+
+ )}
+
+
+
+ {/* Report Reason Modal */}
+
setSelectedReport(null)}
+ />
+
+
+
+
+ );
+}
+
+export default BlockedProfileListPage;
\ No newline at end of file
diff --git a/src/pages/InterestSendPage.jsx b/src/pages/InterestSendPage.jsx
new file mode 100644
index 0000000..4a10c18
--- /dev/null
+++ b/src/pages/InterestSendPage.jsx
@@ -0,0 +1,416 @@
+import * as React from "react";
+import { useState } from "react";
+import { Crown, Bookmark } from "lucide-react";
+import Box from "@mui/material/Box";
+import Tab from "@mui/material/Tab";
+import TabContext from "@mui/lab/TabContext";
+import TabList from "@mui/lab/TabList";
+import TabPanel from "@mui/lab/TabPanel";
+
+// Icons as inline SVG components
+const CakeIcon = () => (
+
+
+
+);
+
+const AccessibilityIcon = () => (
+
+
+
+);
+
+const GroupsIcon = () => (
+
+
+
+);
+
+const SchoolIcon = () => (
+
+
+
+);
+
+const LocationIcon = () => (
+
+
+
+);
+
+// Profile Card Component
+function ProfileCard({ profile,activeTab }) {
+ const [isLiked, setIsLiked] = useState(false);
+
+ return (
+
+ {/* Profile Image Section */}
+
+ {/* Premium Badge */}
+ {profile.isPremium && (
+
+
+
+ )}
+
+ {/* Shortlist Button */}
+
+
+ Shortlist
+
+
+
+
+ {/* White Gradient Overlay */}
+
+
+ {/* Profile Info Overlay */}
+
+
+ {profile.name}
+
+
+ Matrimony ID: {profile.matrimonyId}
+
+
+
+
+ {/* Profile Details */}
+
+
+
+
+
+ Age: {profile.age}
+
+
+
+
+
+ Height: {profile.height}
+
+
+
+
+
+
+
+ {profile.religion}
+
+
+
+
+
+
+ {profile.education}
+
+
+
+
+
+
+ {profile.location}
+
+
+
+ {/* Action Buttons */}
+
+
+ {/* ❌ Cross button always visible */}
+
+
+
+
+
+
+ {/* ❤️ Like Button → ONLY visible when tab = "2" (Sent Requests) */}
+ {activeTab === "2" && (
+
setIsLiked(!isLiked)}
+ >
+ {isLiked ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+ )}
+
+
+
+
+
+ );
+}
+
+// Main Component
+export default function InterestSendPage() {
+ const [value, setValue] = useState("1");
+
+ const handleChange = (event, newValue) => {
+ setValue(newValue);
+ };
+
+ // Sample data for different categories
+ const profilesData = {
+ received: [
+ {
+ id: 1,
+ name: "Priya Sharma",
+ matrimonyId: "PS2847593",
+ age: 24,
+ height: "5.4",
+ religion: "Hindu / Brahmin",
+ education: "MBA / Marketing Manager",
+ location: "Mumbai",
+ image:
+ "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=600&h=800&fit=crop",
+ isPremium: true,
+ },
+ {
+ id: 2,
+ name: "Ananya Reddy",
+ matrimonyId: "AR2847594",
+ age: 23,
+ height: "5.3",
+ religion: "Hindu / Reddy",
+ education: "B.Tech / Software Engineer",
+ location: "Hyderabad",
+ image:
+ "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=600&h=800&fit=crop",
+ isPremium: false,
+ },
+ {
+ id: 3,
+ name: "Divya Patel",
+ matrimonyId: "DP2847595",
+ age: 25,
+ height: "5.5",
+ religion: "Hindu / Patel",
+ education: "CA / Chartered Accountant",
+ location: "Ahmedabad",
+ image:
+ "https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=600&h=800&fit=crop",
+ isPremium: true,
+ },
+ ],
+ sent: [
+ {
+ id: 4,
+ name: "Kavya Iyer",
+ matrimonyId: "KI2847596",
+ age: 22,
+ height: "5.2",
+ religion: "Hindu / Iyer",
+ education: "BCA / Data Analyst",
+ location: "Chennai",
+ image:
+ "https://images.unsplash.com/photo-1488426862026-3ee34a7d66df?w=600&h=800&fit=crop",
+ isPremium: true,
+ },
+ {
+ id: 5,
+ name: "Neha Singh",
+ matrimonyId: "NS2847597",
+ age: 26,
+ height: "5.6",
+ religion: "Hindu / Rajput",
+ education: "MD / Doctor",
+ location: "Delhi",
+ image:
+ "https://images.unsplash.com/photo-1524504388940-b1c1722653e1?w=600&h=800&fit=crop",
+ isPremium: false,
+ },
+ ],
+ accepted: [
+ {
+ id: 6,
+ name: "Shreya Nair",
+ matrimonyId: "SN2847598",
+ age: 24,
+ height: "5.4",
+ religion: "Hindu / Nair",
+ education: "B.Sc / Nurse",
+ location: "Kochi",
+ image:
+ "https://images.unsplash.com/photo-1531123897727-8f129e1688ce?w=600&h=800&fit=crop",
+ isPremium: true,
+ },
+ {
+ id: 7,
+ name: "Meera Desai",
+ matrimonyId: "MD2847599",
+ age: 23,
+ height: "5.3",
+ religion: "Hindu / Desai",
+ education: "BBA / HR Manager",
+ location: "Pune",
+ image:
+ "https://images.unsplash.com/photo-1517841905240-472988babdf9?w=600&h=800&fit=crop",
+ isPremium: false,
+ },
+ {
+ id: 8,
+ name: "Riya Kumar",
+ matrimonyId: "RK2847600",
+ age: 25,
+ height: "5.5",
+ religion: "Hindu / Kumar",
+ education: "M.Tech / Project Manager",
+ location: "Bangalore",
+ image:
+ "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?w=600&h=800&fit=crop",
+ isPremium: true,
+ },
+ ],
+ rejected: [
+ {
+ id: 9,
+ name: "Sanya Joshi",
+ matrimonyId: "SJ2847601",
+ age: 27,
+ height: "5.7",
+ religion: "Hindu / Joshi",
+ education: "LLB / Lawyer",
+ location: "Nagpur",
+ image:
+ "https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?w=600&h=800&fit=crop",
+ isPremium: false,
+ },
+ ],
+ };
+
+ return (
+
+
+ {/* Header */}
+
+
+ Interest Management
+
+
+ Manage your matrimony profile interests
+
+
+
+ {/* MUI Tabs */}
+
+
+
+
+
+
+
+
+
+
+
+ {/* Received Requests */}
+
+
+ {profilesData.received.map((profile) => (
+
+ ))}
+
+
+
+ {/* Sent Requests */}
+
+
+ {profilesData.sent.map((profile) => (
+
+ ))}
+
+
+
+ {/* Accepted */}
+
+
+ {profilesData.accepted.map((profile) => (
+
+ ))}
+
+
+
+ {/* Rejected */}
+
+
+ {profilesData.rejected.map((profile) => (
+
+ ))}
+
+
+
+
+
+
+ );
+}
diff --git a/src/pages/MatchesPage.jsx b/src/pages/MatchesPage.jsx
new file mode 100644
index 0000000..1ef23ba
--- /dev/null
+++ b/src/pages/MatchesPage.jsx
@@ -0,0 +1,15 @@
+import MatchesInterface from "../components/matches/MatchesProfilesTab"
+import SearchUI from "../components/matches/SearchUI"
+
+const MatchesPage = () => {
+ return (
+ <>
+
+
+
+
+ >
+ )
+}
+
+export default MatchesPage
\ No newline at end of file
diff --git a/src/pages/ProfileDetailPage.jsx b/src/pages/ProfileDetailPage.jsx
new file mode 100644
index 0000000..e558732
--- /dev/null
+++ b/src/pages/ProfileDetailPage.jsx
@@ -0,0 +1,16 @@
+import MatrimonyProfile from "../components/profiledetail/MatrimonyProfile"
+import PartnerPreferences from "../components/profiledetail/PartnerPreferences"
+
+const ProfileDetailPage = () => {
+ return (
+ <>
+
+ >
+ )
+}
+
+export default ProfileDetailPage
\ No newline at end of file
diff --git a/src/pages/UserDashboardHome.jsx b/src/pages/UserDashboardHome.jsx
index 59f39d4..a378e47 100644
--- a/src/pages/UserDashboardHome.jsx
+++ b/src/pages/UserDashboardHome.jsx
@@ -8,20 +8,33 @@ import DailyRecommendedCard from '../components/profiledashboard/DailyRecommende
import MatrimonyArticles from '../components/profiledashboard/MatrimonyArticles';
import MatchingList from '../components/profiledashboard/MatchingList';
import PaidMemberCard from '../components/profiledashboard/PaidMemberCard';
+import LazyImage from '../components/common/LazyImage';
+import weddingpromo1 from "../assets/images/weddingpromo1.jpg";
+import weddingpromo2 from "../assets/images/weddingpromo2.jpg";
+
+import weddingpromo3 from "../assets/images/weddingpromo3.jpg";
+
+import weddingpromo4 from "../assets/images/weddingpromo4.jpg";
+import ProfileCard from '../components/common/ProfileCard';
+import NewJoinedProfile from '../components/profiledashboard/NewJoinedProfile';
+import CustomerSupportCard from '../components/profiledashboard/CustomerSupportCard';
+import VideoSwiperGallery from '../components/profiledashboard/VideoSwiperGallery';
+
const images = [
-
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
- "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e",
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
- "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e",
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
- "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e",
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
- "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e",
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
- "https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e",
- ];
+ weddingpromo1, // bride in saree
+ weddingpromo2, // traditional jewellery
+ weddingpromo3, // flower details
+ weddingpromo4, // couple hands
+ weddingpromo1, // bride close-up
+ weddingpromo3, // groom + bride portrait
+ weddingpromo2, // wedding decor
+ weddingpromo4, // bride in temple
+ weddingpromo1, // traditional ceremony
+ weddingpromo3 // couple full shot
+];
+
+
const UserDashboardHome = () => {
return (
<>
@@ -62,6 +75,12 @@ const UserDashboardHome = () => {
alt={`Slide ${idx + 1}`}
className="w-full h-full object-cover"
/>
+
+ {/*
*/}
{/*
Slide {idx + 1}
*/}
@@ -71,109 +90,7 @@ const UserDashboardHome = () => {