diff --git a/package-lock.json b/package-lock.json index d19a387..10f0912 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@emotion/styled": "^11.14.1", "@lottiefiles/dotlottie-react": "^0.17.8", "@mui/icons-material": "^7.3.5", + "@mui/lab": "^7.0.1-beta.19", "@mui/material": "^7.3.5", "@mui/styled-engine-sc": "^7.3.5", "@tailwindcss/vite": "^4.1.17", @@ -397,6 +398,7 @@ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", "license": "MIT", + "peer": true, "dependencies": { "@emotion/memoize": "^0.9.0" } @@ -1271,6 +1273,50 @@ } } }, + "node_modules/@mui/lab": { + "version": "7.0.1-beta.19", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.1-beta.19.tgz", + "integrity": "sha512-Ekxd2mPnr5iKwrMXjN/y2xgpxPX8ithBBcDenjqNdBt/ZQumrmBl0ifVoqAHsL6lxN6DOgRsWTRc4eOdDiB+0Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/system": "^7.3.5", + "@mui/types": "^7.4.8", + "@mui/utils": "^7.3.5", + "clsx": "^2.1.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material": "^7.3.5", + "@mui/material-pigment-css": "^7.3.5", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/material": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.5.tgz", diff --git a/package.json b/package.json index a5c8b94..551a2b0 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@emotion/styled": "^11.14.1", "@lottiefiles/dotlottie-react": "^0.17.8", "@mui/icons-material": "^7.3.5", + "@mui/lab": "^7.0.1-beta.19", "@mui/material": "^7.3.5", "@mui/styled-engine-sc": "^7.3.5", "@tailwindcss/vite": "^4.1.17", diff --git a/src/assets/images/customer.png b/src/assets/images/customer.png new file mode 100644 index 0000000..a0b17a0 Binary files /dev/null and b/src/assets/images/customer.png differ diff --git a/src/assets/images/girlchat.webp b/src/assets/images/girlchat.webp new file mode 100644 index 0000000..06c2356 Binary files /dev/null and b/src/assets/images/girlchat.webp differ diff --git a/src/assets/images/homeicon.png b/src/assets/images/homeicon.png new file mode 100644 index 0000000..b245e88 Binary files /dev/null and b/src/assets/images/homeicon.png differ diff --git a/src/assets/images/horoscopericon.png b/src/assets/images/horoscopericon.png new file mode 100644 index 0000000..a09e38e Binary files /dev/null and b/src/assets/images/horoscopericon.png differ diff --git a/src/assets/images/membership.avif b/src/assets/images/membership.avif new file mode 100644 index 0000000..28764b8 Binary files /dev/null and b/src/assets/images/membership.avif differ diff --git a/src/assets/images/membershipgirl.avif b/src/assets/images/membershipgirl.avif new file mode 100644 index 0000000..3bf4a8e Binary files /dev/null and b/src/assets/images/membershipgirl.avif differ diff --git a/src/assets/images/profilebg.jpg b/src/assets/images/profilebg.jpg new file mode 100644 index 0000000..71064c6 Binary files /dev/null and b/src/assets/images/profilebg.jpg differ diff --git a/src/assets/images/profileicon.png b/src/assets/images/profileicon.png new file mode 100644 index 0000000..8fec608 Binary files /dev/null and b/src/assets/images/profileicon.png differ diff --git a/src/assets/images/weddingpromo1.jpg b/src/assets/images/weddingpromo1.jpg new file mode 100644 index 0000000..b57c6f9 Binary files /dev/null and b/src/assets/images/weddingpromo1.jpg differ diff --git a/src/assets/images/weddingpromo2.jpg b/src/assets/images/weddingpromo2.jpg new file mode 100644 index 0000000..7ee2430 Binary files /dev/null and b/src/assets/images/weddingpromo2.jpg differ diff --git a/src/assets/images/weddingpromo3.jpg b/src/assets/images/weddingpromo3.jpg new file mode 100644 index 0000000..145479a Binary files /dev/null and b/src/assets/images/weddingpromo3.jpg differ diff --git a/src/assets/images/weddingpromo4.jpg b/src/assets/images/weddingpromo4.jpg new file mode 100644 index 0000000..01acbf4 Binary files /dev/null and b/src/assets/images/weddingpromo4.jpg differ diff --git a/src/components/common/LandingHeader.jsx b/src/components/common/LandingHeader.jsx index b54298b..e4ec5ed 100644 --- a/src/components/common/LandingHeader.jsx +++ b/src/components/common/LandingHeader.jsx @@ -30,6 +30,12 @@ const settings = ["Profile", "Account", "Dashboard", "Logout"]; import { useState, useRef, useEffect } from 'react'; import { Home, Search, Heart, MessageCircle, User, Settings } from 'lucide-react'; +const NAV_LINKS = [ +  { label: "Home", path: "/", icon: }, +  { label: "Matches", path: "/matches", icon: }, +  { label: "Search", path: "/search", icon: }, +  { label: "Chat", path: "/chat", icon: } +] // Sparkle Navbar Component const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick }) => { @@ -155,13 +161,14 @@ const LandingHeader = () => { - {["Matches", "Search", "Chat", "Mail"].map((text, index) => ( - - - - {index % 2 === 0 ? : } - - + {NAV_LINKS.map(({ label, path, icon }) => ( + + { + navigate(path); + toggleDrawer(false)(); + }}> + {icon} + ))} @@ -259,9 +266,13 @@ const LandingHeader = () => { ))} */} link.label)} color="#034E08" - onItemClick={(item) => setSelectedItem(item)} + onItemClick={(label) => { + setSelectedItem(label); + const link = NAV_LINKS.find(l => l.label === label); + if (link) navigate(link.path); + }} /> diff --git a/src/components/common/ProfileCard.jsx b/src/components/common/ProfileCard.jsx new file mode 100644 index 0000000..ec85c27 --- /dev/null +++ b/src/components/common/ProfileCard.jsx @@ -0,0 +1,158 @@ +import React, { useState } from "react"; +import { Users, Grid3x3, Heart, Crown, Bookmark } from "lucide-react"; +import LazyImage from "./LazyImage"; +import CakeIcon from "@mui/icons-material/Cake"; +import HeightIcon from "@mui/icons-material/Height"; +import GroupsIcon from "@mui/icons-material/Groups"; +import TempleHinduIcon from "@mui/icons-material/TempleHindu"; +import SchoolIcon from "@mui/icons-material/School"; +import LocationOnIcon from "@mui/icons-material/LocationOn"; +import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"; +import { motion } from 'framer-motion'; + +export default function ProfileCard() { + const [isLiked, setIsLiked] = useState(false); + return ( +
+
+ {/* Profile Image Section */} +
+ + {/* Premium Badge */} + + + + + + + {/* Shortlist Button */} + + + Shortlist + + + + Profile + + {/* */} + + {/* White Gradient Overlay at bottom of image */} +
+ + {/* Profile Info Overlay - positioned at bottom */} +
+

+ Jerome bell +

+

+ Matrimony ID: JB2847593 +

+
+
+ + {/* Stats and Follow Section */} +
+
+
+ + + Age : 22 + +
+ +
+ + + Height: 5.2 + +
+
+ +
+
+ + + Hindu / Agamudiyar/thular + +
+
+ +
+
+ + + BCA / Data analyst + +
+
+ +
+
+ + + Chennai + +
+
+ + {/* Action Buttons */} +
+ + + + +
+
+
+
+ ); +} diff --git a/src/components/common/ProfileHeader.jsx b/src/components/common/ProfileHeader.jsx index c682ec4..30321bd 100644 --- a/src/components/common/ProfileHeader.jsx +++ b/src/components/common/ProfileHeader.jsx @@ -24,6 +24,15 @@ import { useTheme, useMediaQuery, ListItemIcon } from "@mui/material"; import {Badge, } from "@mui/material"; import { Home, Users, Heart, MessageCircle, Search, Bell } from "lucide-react"; +const NAV_LINKS = [ + { label: "Home", path: "/" }, + { label: "Matches", path: "/matches" }, + { label: "Interest", path: "/interest" }, + { label: "Messages", path: "/messages" }, + { label: "Search", path: "/search" }, + { label: "Notifications", path: "/notifications" } +]; + /* ---------------------------------------------------- SPARKLE NAVBAR (same as your original code) ---------------------------------------------------- */ @@ -121,6 +130,7 @@ const ProfileHeader = () => { const toggleMobileDrawer = (open) => () => setMobileDrawerOpen(open); const toggleProfileDrawer = (open) => () => setProfileDrawerOpen(open); + const [selectedItem, setSelectedItem] = useState("Home"); /* ----------------------------------------- PROFILE DRAWER CONTENT (RIGHT SIDE) ------------------------------------------ */ @@ -199,13 +209,18 @@ const ProfileHeader = () => { - {["Matches", "Search", "Chat", "Mail"].map((text, index) => ( - - + {NAV_LINKS.map(({ label, path }, index) => ( + + { + navigate(path); + toggleMobileDrawer(false)(); + }} + > {index % 2 === 0 ? : } - + ))} @@ -247,11 +262,16 @@ const ProfileHeader = () => { {/* Desktop Menu */} - setSelectedItem(item)} - /> + link.label)} + color="#034E08" + onItemClick={(item) => { + setSelectedItem(item); + const link = NAV_LINKS.find(l => l.label === item); + if (link) navigate(link.path); + }} +/> + {/* AVATAR CLICK → RIGHT DRAWER */} diff --git a/src/components/matches/MatchesProfilesTab.jsx b/src/components/matches/MatchesProfilesTab.jsx new file mode 100644 index 0000000..04e0437 --- /dev/null +++ b/src/components/matches/MatchesProfilesTab.jsx @@ -0,0 +1,302 @@ +import React, { useState } from "react"; +import { Crown, Bookmark } from "lucide-react"; +import CakeIcon from "@mui/icons-material/Cake"; +import GroupsIcon from "@mui/icons-material/Groups"; +import SchoolIcon from "@mui/icons-material/School"; +import LocationOnIcon from "@mui/icons-material/LocationOn"; +import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"; +import PersonIcon from "@mui/icons-material/Person"; +import StarIcon from "@mui/icons-material/Star"; +import VisibilityIcon from "@mui/icons-material/Visibility"; +import PersonAddIcon from "@mui/icons-material/PersonAdd"; +import { motion } from 'framer-motion'; + +// Profile Card Component +function ProfileCard({ profile }) { + const [isLiked, setIsLiked] = useState(false); + + return ( +
+
+ + + + + + + Shortlist + + + Profile + +
+ +
+

+ {profile.name} +

+

+ Matrimony ID: {profile.id} +

+
+
+ +
+
+
+ + + Age: {profile.age} + +
+ +
+ + + Height: {profile.height} + +
+
+ +
+ + + {profile.community} + +
+ +
+ + + {profile.education} + +
+ +
+ + + {profile.location} + +
+ +
+ + + +
+
+
+ ); +} + +// Main Component +export default function MatchesInterface() { + const [selectedTab, setSelectedTab] = useState('your-matches'); + + const tabs = [ + { + id: 'your-matches', + icon: , + title: 'Your Matches', + description: 'View all the profiles that match your preferences', + category: 'All Matches' + }, + { + id: 'shortlisted-by-you', + icon: , + title: 'Shortlisted by you', + description: 'Matches you have shortlisted', + category: 'Based on activity' + }, + { + id: 'viewed-you', + icon: , + title: 'Viewed you', + description: 'Matches who have viewed your profile', + category: 'Based on activity' + }, + { + id: 'shortlisted-you', + icon: , + title: 'Shortlisted you', + description: 'Matches who have shortlisted your profile', + category: 'Based on activity' + }, + { + id: 'viewed-by-you', + icon: , + title: 'Viewed by you', + description: 'Matches you have viewed', + category: 'Based on activity' + } + ]; + + const profiles = [ + { + id: 'JB2847593', + name: 'Jerome Bell', + age: 22, + height: '5.2', + community: 'Hindu / Agamudiyar/thular', + education: 'BCA / Data analyst', + location: 'Chennai', + image: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=600&h=800&fit=crop&crop=faces,top' + }, + { + id: 'SA8392847', + name: 'Sarah Anderson', + age: 24, + height: '5.4', + community: 'Hindu / Iyer', + education: 'MBA / Marketing Manager', + location: 'Bangalore', + image: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=600&h=800&fit=crop&crop=faces,top' + }, + { + id: 'PR9384756', + name: 'Priya Reddy', + age: 23, + height: '5.3', + community: 'Hindu / Reddy', + education: 'B.Tech / Software Engineer', + location: 'Hyderabad', + image: 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=600&h=800&fit=crop&crop=faces,top' + }, + { + id: 'AN4758392', + name: 'Ananya Krishnan', + age: 25, + height: '5.5', + community: 'Hindu / Nair', + education: 'MD / Doctor', + location: 'Kochi', + image: 'https://images.unsplash.com/photo-1488426862026-3ee34a7d66df?w=600&h=800&fit=crop&crop=faces,top' + } + ]; + + let currentCategory = ''; + + return ( +
+ + + {/* Left Sidebar - Fixed on desktop, scrollable on mobile */} +
+
+ {tabs.map((tab) => { + const showCategory = tab.category !== currentCategory; + if (showCategory) { + currentCategory = tab.category; + } + + return ( + + {showCategory && ( +

+ {tab.category} +

+ )} +
setSelectedTab(tab.id)} + className={`p-4 rounded-lg mb-3 cursor-pointer transition-all ${ + selectedTab === tab.id + ? 'bg-green-50 border-l-4 border-green-600' + : 'hover:bg-gray-50' + }`} + > +
+
+ {tab.icon} +
+
+
+

+ {tab.title} +

+ + + +
+

{tab.description}

+
+
+
+
+ ); + })} +
+
+ + {/* Right Content Area - Scrollable */} +
+
+

+ {tabs.find(t => t.id === selectedTab)?.title} +

+ +
+ {profiles.map((profile) => ( + + ))} +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/matches/SearchUI.jsx b/src/components/matches/SearchUI.jsx new file mode 100644 index 0000000..4f40911 --- /dev/null +++ b/src/components/matches/SearchUI.jsx @@ -0,0 +1,104 @@ +import React, { useState } from 'react'; +import { Search } from 'lucide-react'; + +export default function SearchUI() { + const [searchValue, setSearchValue] = useState(''); + const [showSuggestions, setShowSuggestions] = useState(false); + + // Sample suggestions data - you can replace with dynamic data + const allSuggestions = [ + 'React components', + 'React hooks tutorial', + 'React router', + 'Tailwind CSS guide', + 'Tailwind responsive design', + 'JavaScript ES6 features', + 'JavaScript promises', + 'TypeScript basics', + 'Node.js express', + 'Next.js framework', + ]; + + // Filter suggestions based on search value + const filteredSuggestions = searchValue.trim() + ? allSuggestions.filter(suggestion => + suggestion.toLowerCase().includes(searchValue.toLowerCase()) + ) + : []; + + const handleSuggestionClick = (suggestion) => { + setSearchValue(suggestion); + setShowSuggestions(false); + }; + + const handleSearch = () => { + console.log('Searching for:', searchValue); + setShowSuggestions(false); + }; + + return ( +
+
+ {/* Search Container */} +
+ {/* Shadow/Glow Effect */} +
+ + {/* Main Search Bar */} +
+ {/* Search Input */} + { + setSearchValue(e.target.value); + setShowSuggestions(true); + }} + onFocus={() => setShowSuggestions(true)} + onKeyDown={(e) => { + if (e.key === 'Enter') { + handleSearch(); + } + }} + placeholder="Search" + className="flex-1 px-8 py-4 text-lg text-gray-700 placeholder-red-600 bg-transparent outline-none font-medium" + /> + + {/* Search Button */} + +
+ + {/* Suggestions Dropdown */} + {showSuggestions && filteredSuggestions.length > 0 && ( +
+ {filteredSuggestions.map((suggestion, index) => ( + + ))} +
+ )} +
+ + {/* Click outside to close suggestions */} + {showSuggestions && ( +
setShowSuggestions(false)} + /> + )} +
+
+ ); +} \ No newline at end of file diff --git a/src/components/profiledashboard/AstroChatUI.jsx b/src/components/profiledashboard/AstroChatUI.jsx new file mode 100644 index 0000000..43ecd87 --- /dev/null +++ b/src/components/profiledashboard/AstroChatUI.jsx @@ -0,0 +1,94 @@ +import girlchat from "../../assets/images/girlchat.webp" +const AstroChatUI = () => { + return ( + <> + +
+
+ + {/* Logo Section */} +
+
+
+ {/* Planet Icon */} + + + + {/* Chat dots */} + + + + {/* Stars */} + + + +
+
+

+ Astro + FreeChart +

+
+
+

+ From Thirukalyanam Matrimony Group +

+
+ + {/* Main Heading */} +

+ Looking for astrology guidance in love, relationships, career, or health? +

+ + {/* Subheading */} +

+ Connect instantly with expert astrologers on AstroFreeChat. +

+ + {/* Features List */} +
+
+ +

+ Instant Astrology Insights +

+
+ +
+ +

+ Chat Anytime, Anywhere +

+
+ +
+ +

+ First 5 Minutes FREE +

+
+
+ + {/* CTA Button */} + + + {/* Girl Image - Positioned at bottom right */} +
+ Woman using chat + + +
+
+
+ + + ) +} + +export default AstroChatUI \ No newline at end of file diff --git a/src/components/profiledashboard/CustomerSupportCard.jsx b/src/components/profiledashboard/CustomerSupportCard.jsx new file mode 100644 index 0000000..b3a57a3 --- /dev/null +++ b/src/components/profiledashboard/CustomerSupportCard.jsx @@ -0,0 +1,66 @@ +import membershipgirl from "../../assets/images/customer.png"; +import CheckCircleIcon from "@mui/icons-material/CheckCircle"; + +const CustomerSupportCard = () => { + return ( + <> + +
+
+ + {/* Left Content */} +
+

+ Customer Support +

+ +

+ Get up to 24/7 Hours customer support we provide to guide you +

+ + {/* Features */} +
    +
  • + + 24/7 Support Available +
  • + +
  • + + Guild you to build profile +
  • + +
  • + + Instant Problem Solve +
  • + +
  • + + Partner Matching Improvement + +
  • + + + +
+ + +
+ + {/* Right Side Image */} +
+ Paid Member Offer +
+
+
+ + + ) +} + +export default CustomerSupportCard \ No newline at end of file diff --git a/src/components/profiledashboard/DailyRecommendedCard.jsx b/src/components/profiledashboard/DailyRecommendedCard.jsx index a7c966c..d829f5a 100644 --- a/src/components/profiledashboard/DailyRecommendedCard.jsx +++ b/src/components/profiledashboard/DailyRecommendedCard.jsx @@ -1,9 +1,15 @@ -import React, { useRef } from 'react'; +import { useRef, useState } 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 CakeIcon from "@mui/icons-material/Cake"; +import HeightIcon from "@mui/icons-material/Height"; +import GroupsIcon from "@mui/icons-material/Groups"; +import TempleHinduIcon from "@mui/icons-material/TempleHindu"; +import SchoolIcon from "@mui/icons-material/School"; +import LocationOnIcon from "@mui/icons-material/LocationOn"; +import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"; // Import Swiper styles import 'swiper/css'; import 'swiper/css/navigation'; @@ -96,16 +102,25 @@ const DailyRecommendedCard = () => { ]; // Profile Card Component - const ProfileCard = ({ profile }) => ( - - {/* Premium Badge */} - {profile.isPremium && ( + + +const ProfileCard = ({ profile }) => { + const [isLiked, setIsLiked] = useState(false); + + return ( + + + {/* Profile Image Section */} +
+ + {/* Premium Badge */} + {profile.isPremium && ( { > - )} + )} - {/* Shortlist Button */} + {/* Shortlist Button */} - Shortlist + Shortlist - {/* Profile Image */} -
- {profile.name} -
-
- {/* Profile Info */} -
-
-

{profile.name}

-

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

+ {profile.name} + + {/* */} + + {/* White Gradient Overlay at bottom of image */} +
+ + {/* Profile Info Overlay - positioned at bottom */} +
+

+ {profile.name} +

+

+ Matrimony ID: {profile.userId} +

+
- {/* Details */} -
-
- - {profile.age} Yrs, {profile.height} -
- -
-
-
+ {/* Stats and Follow Section */} +
+
+
+ + + Age : {profile.age} + +
+ +
+ + + Height: {profile.height} +
- {profile.religion}
-
- - {profile.education} +
+
+ + + {profile.religion} + +
-
- - {profile.location} +
+
+ + + {profile.education} + +
+
+ +
+
+ + + {profile.location} + +
+
+ + {/* Action Buttons */} +
+ + + +
+ + + ); + }; - {/* Action Buttons */} -
- - - Don't Show - Skip - - - - Send Interest - Interest - -
-
- - ); return ( -
-
+
+
{/* Header */} -

+

Daily Recommended

-

Find your perfect match today

+

Find your perfect match today

{/* Swiper Container */} @@ -257,7 +321,9 @@ const DailyRecommendedCard = () => { whileHover={{ scale: 1.1, x: -5 }} whileTap={{ scale: 0.9 }} onClick={() => 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" + 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 " > @@ -266,7 +332,9 @@ const DailyRecommendedCard = () => { whileHover={{ scale: 1.1, x: 5 }} whileTap={{ scale: 0.9 }} onClick={() => 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" + 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" > @@ -282,7 +350,7 @@ const DailyRecommendedCard = () => { View All Recommendations @@ -294,8 +362,9 @@ const DailyRecommendedCard = () => { .swiper-pagination-bullet { width: 10px; height: 10px; - background: #ec4899; + background: #A70710; opacity: 0.5; + } .swiper-pagination-bullet-active { @@ -308,6 +377,7 @@ const DailyRecommendedCard = () => { height: auto; display: flex; } + `}
); diff --git a/src/components/profiledashboard/MatchingList.jsx b/src/components/profiledashboard/MatchingList.jsx index c927ce1..04bd7f1 100644 --- a/src/components/profiledashboard/MatchingList.jsx +++ b/src/components/profiledashboard/MatchingList.jsx @@ -1,136 +1,361 @@ -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" - } -]; +import { useRef, useState } 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 CakeIcon from "@mui/icons-material/Cake"; +import HeightIcon from "@mui/icons-material/Height"; +import GroupsIcon from "@mui/icons-material/Groups"; +import TempleHinduIcon from "@mui/icons-material/TempleHindu"; +import SchoolIcon from "@mui/icons-material/School"; +import LocationOnIcon from "@mui/icons-material/LocationOn"; +import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"; +import profilebg from "../../assets/images/profilebg.jpg"; +// Import Swiper styles +import 'swiper/css'; +import 'swiper/css/navigation'; +import 'swiper/css/pagination'; +import 'swiper/css/effect-coverflow'; const MatchingList = () => { + + 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 }) => { + const [isLiked, setIsLiked] = useState(false); + + return ( + + + {/* Profile Image Section */} +
+ + {/* Premium Badge */} + {profile.isPremium && ( + + + + )} + + {/* Shortlist Button */} + + + Shortlist + + + + {profile.name} + + {/* */} + + {/* White Gradient Overlay at bottom of image */} +
+ + {/* Profile Info Overlay - positioned at bottom */} +
+

+ {profile.name} +

+

+ Matrimony ID: {profile.userId} +

+
+
+ + {/* Stats and Follow Section */} +
+
+
+ + + Age : {profile.age} + +
+ +
+ + + Height: {profile.height} + +
+
+ +
+
+ + + {profile.religion} + +
+
+ +
+
+ + + {profile.education} + +
+
+ +
+
+ + + {profile.location} + +
+
+ + +
+
+ + ); + }; + return ( <> -
- - {profiles.map((p, i) => ( - -
- {/* Image */} -
- {p.name} +
- 👑 -
-
+> +
+ {/* Header */} + +

+ Your Matching List +

+

Find your perfect match today

+
- {/* Content */} -
-

{p.name}

+ {/* Swiper Container */} +
+ + {profiles.map((profile) => ( + + + + ))} + -

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

+ {/* 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 " + > + + -
- - - {p.age}, {p.height} - -
+ 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" + > + + +
-
- - {p.location} -
-
-
- - ))} - + {/* View All Button */} + + + View All Matches + + +
-
diff --git a/src/components/profiledashboard/MatrimonyArticles.jsx b/src/components/profiledashboard/MatrimonyArticles.jsx index dc4ac64..5de7bec 100644 --- a/src/components/profiledashboard/MatrimonyArticles.jsx +++ b/src/components/profiledashboard/MatrimonyArticles.jsx @@ -2,65 +2,122 @@ import { Swiper, SwiperSlide } from "swiper/react"; import { Navigation } from "swiper/modules"; import "swiper/css"; import "swiper/css/navigation"; +import { motion } from 'framer-motion'; +import { Crown, Bookmark, User, Briefcase, MapPin, X, Send, ChevronLeft, ChevronRight } from 'lucide-react'; +import { useRef } from "react"; +import LazyImage from "../common/LazyImage"; 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", + img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&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", + img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&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", + img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&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", + img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" }, { title: "Communication Secrets for Couples", - img: "https://images.unsplash.com/photo-1523580846011-d3a5bc25702b?auto=format&fit=crop&w=800&q=80", - }, + img: "https://images.unsplash.com/photo-1482849297070-f4fae2173efe?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + } ]; + + const MatrimonyArticles = () => { + const swiperRef = useRef(null); return ( <> -
-

+
+

Matrimony Articles

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

{item.title}

+ + {/* */} + + {/* White Gradient Overlay at bottom of image */} +
+ + {/* Profile Info Overlay - positioned at bottom */} +
+
+

{item.title}

+
+
+
))} + {/* 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" + > + + +
+
+ + + ) +} + +export default NewJoinedProfile \ No newline at end of file diff --git a/src/components/profiledashboard/PaidMemberCard.jsx b/src/components/profiledashboard/PaidMemberCard.jsx index bb66fa6..f379ec1 100644 --- a/src/components/profiledashboard/PaidMemberCard.jsx +++ b/src/components/profiledashboard/PaidMemberCard.jsx @@ -1,9 +1,11 @@ +import membershipgirl from "../../assets/images/membership.avif"; const PaidMemberCard = () => { return ( <> -
-
+ +
+
{/* Left Content */}
@@ -12,7 +14,7 @@ const PaidMemberCard = () => {

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

{/* Features */} @@ -39,7 +41,7 @@ const PaidMemberCard = () => { {/* Button */} -
@@ -47,7 +49,7 @@ const PaidMemberCard = () => { {/* Right Side Image */}
Paid Member Offer 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 */} +
+ {video.title} + + {/* 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 */} + + + {/* Video Player */} +
+ + + {/* Video Info */} +
+

+ {selectedVideo.title} +

+
+
+ + {selectedVideo.views} views +
+
+ + {selectedVideo.likes} likes +
+ +
+
+
+
+
+ ); + }; + + 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)} + > + {`${profile.name} +
+
+ ))} +
+ + {/* Swiper Navigation Buttons */} + + + + {/* Pagination */} + {/*
*/} + + {/* Thumbnail Navigation */} + {/*
+ {profile.images.slice(0, 4).map((img, idx) => ( +
mainSwiperRef.current?.slideTo(idx)} + > + +
+ ))} +
*/} +
+
+ + {/* Profile Details Section */} +
+
+
+
+ + + +
+ ID verified +
+
+ + {showMenu && ( +
+ + + + +
+ )} +
+
+ +

+ {profile.name} +

+

+ {profile.id} | {profile.lastSeen} +

+ +
+

+ {profile.maritalStatus} + + + {profile.createdBy} + + + {profile.age} + + {profile.height} + + {profile.caste} +

+

+ {profile.education} + + {profile.location} +

+
+ + {/* Action Buttons */} +
+ + {/* */} + +
+
+
+
+ + {/* Image Modal with Swiper */} + {isModalOpen && ( +
+ + +
+
+
+ {/* Main Modal Swiper */} +
+ { + modalSwiperRef.current = swiper; + }} + className="h-full w-full" + > + {profile.images.map((img, idx) => ( + +
+ {`${profile.name} +
+
+ ))} +
+ + {/* 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? +

+ +
+
+
+
+
+ )} + +
+ {/* 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 + : + +
+
+ Star + : + +
+
+ Rassi + : + +
+
+ Horoscope + : + +
+
+ Employment + : + Employed in private +
+
+ Income + : + ₹ 4 - 5 Lakhs +
+
+ Education + : + BE +
+
+ Occupation + : + Engineer - Non IT +
+
+
+ + {/* Family Information Section */} +
+
+
+ + + +
+

Family Information

+
+ +
+
+ Parents + : + + Father Passed Away, Mother is a Home Maker + +
+
+ Ancestral Origin + : + Rameshwaram +
+
+ {/* Contact Information Section */} +
+
+
+ + + +
+

Contact Information

+
+ +
+
+ Mobile Number + : +
+ + + + + + + +91 99•••••••• + +
+
+
+
+ + {/* About Myself Section */} +
+
+
+ + + +
+

About Myself

+
+ +
+
+

+ 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 */} +
+
+
+ + + +
+

Lifestyle

+
+ +
+
+ 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 */} +
+
+
+ Profile +
+

You match

+

+ 14/20 +

+

of his preferences

+
+
+ Your Profile +
+
+ + {/* Basic Preferences Section */} +
+
+

Basic Preferences

+
+ You match +
+ +
+
+
+
+ {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 ( + + ); +} + +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 }) => ( +
+
+
+ {profile.name} + +
+ +
+
+ + 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

+ +
+
+); + +const ReportedProfile = ({ profile, onViewReason }) => { + return ( +
+
+
+ {profile.name} +
+
+

{profile.name}

+

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

+ +
+
+ + Profile created by Parent + + {profile.age} yrs +
+
+ + {profile.caste} +
+
+ + {profile.occupation} + + {profile.location} +
+
+ + +
+
+
+ ); +}; + +const ReportReasonModal = ({ profile, onClose }) => { + if (!profile) return null; + + return ( +
+
+
+ {profile.name} +
+

{profile.name}

+

ID : {profile.id}

+
+
+ +
+

Reason For Report

+

+ {profile.reportReason} +

+
+
+ + +
+ +
+
+ ); +}; + + +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 */} + + + Profile + + {/* 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" && ( + + )} + +
+ +
+
+ ); +} + +// 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 = () => {
- {/* */} +