diff --git a/package-lock.json b/package-lock.json index 90d6eed..dc1d1e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -451,7 +450,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -495,7 +493,6 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -1380,7 +1377,6 @@ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.5.tgz", "integrity": "sha512-8VVxFmp1GIm9PpmnQoCoYo0UWHoOrdA57tDL62vkpzEgvb/d71Wsbv4FRg7r1Gyx7PuSo0tflH34cdl/NvfHNQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/core-downloads-tracker": "^7.3.5", @@ -1514,7 +1510,6 @@ "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.5.tgz", "integrity": "sha512-yPaf5+gY3v80HNkJcPi6WT+r9ebeM4eJzrREXPxMt7pNTV/1eahyODO4fbH3Qvd8irNxDFYn5RQ3idHW55rA6g==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/private-theming": "^7.3.5", @@ -2381,8 +2376,7 @@ } ], "hasInstallScript": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tsparticles/interaction-external-attract": { "version": "3.9.1", @@ -3000,7 +2994,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.4.tgz", "integrity": "sha512-tBFxBp9Nfyy5rsmefN+WXc1JeW/j2BpBHFdLZbEVfs9wn3E3NRFxwV0pJg8M1qQAexFpvz73hJXFofV0ZAu92A==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3050,7 +3043,6 @@ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.181.0.tgz", "integrity": "sha512-MLF1ks8yRM2k71D7RprFpDb9DOX0p22DbdPqT/uAkc6AtQXjxWCVDjCy23G9t1o8HcQPk7woD2NIyiaWcWPYmA==", "license": "MIT", - "peer": true, "dependencies": { "@dimforge/rapier3d-compat": "~0.12.0", "@tweenjs/tween.js": "~23.1.3", @@ -3323,7 +3315,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3600,7 +3591,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -4020,8 +4010,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/d3-array": { "version": "3.2.4", @@ -4149,7 +4138,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -4264,8 +4252,7 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -4442,7 +4429,6 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6074,7 +6060,6 @@ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.18.0.tgz", "integrity": "sha512-FYZZqD0UUHUswKz3LQl2Z7H24AhD14XGTsIRw3SJaXUxyfVMi+1yiZGmqTcPt/CkPpdU7rrxqcyQ1zJE5DjvIQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.17.8", "@types/react-reconciler": "^0.26.7", @@ -6157,7 +6142,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -6753,7 +6737,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6862,7 +6845,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -7115,7 +7097,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -7125,7 +7106,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -7223,7 +7203,6 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", - "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -7450,8 +7429,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -7681,7 +7659,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -7881,7 +7858,6 @@ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.19.tgz", "integrity": "sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA==", "license": "MIT", - "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -8424,7 +8400,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -8577,7 +8552,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "license": "MIT", - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -8740,7 +8714,6 @@ "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/assets/images/god1.png b/src/assets/images/god1.png new file mode 100644 index 0000000..0eed20f Binary files /dev/null and b/src/assets/images/god1.png differ diff --git a/src/assets/images/greenbg2.jpg b/src/assets/images/greenbg2.jpg new file mode 100644 index 0000000..8a30de8 Binary files /dev/null and b/src/assets/images/greenbg2.jpg differ diff --git a/src/assets/images/greenbg3.jpg b/src/assets/images/greenbg3.jpg new file mode 100644 index 0000000..34c25bc Binary files /dev/null and b/src/assets/images/greenbg3.jpg differ diff --git a/src/assets/images/greenbg4.jpg b/src/assets/images/greenbg4.jpg new file mode 100644 index 0000000..f93b40f Binary files /dev/null and b/src/assets/images/greenbg4.jpg differ diff --git a/src/assets/images/perumal.png b/src/assets/images/perumal.png new file mode 100644 index 0000000..b16d62b Binary files /dev/null and b/src/assets/images/perumal.png differ diff --git a/src/assets/images/sliderbg1.jpg b/src/assets/images/sliderbg1.jpg new file mode 100644 index 0000000..707c212 Binary files /dev/null and b/src/assets/images/sliderbg1.jpg differ diff --git a/src/assets/images/temple.jpg b/src/assets/images/temple.jpg new file mode 100644 index 0000000..457356e Binary files /dev/null and b/src/assets/images/temple.jpg differ diff --git a/src/assets/images/temple.png b/src/assets/images/temple.png new file mode 100644 index 0000000..5666a0c Binary files /dev/null and b/src/assets/images/temple.png differ diff --git a/src/components/auth/LoginPanel.jsx b/src/components/auth/LoginPanel.jsx index 0577dd3..bee276b 100644 --- a/src/components/auth/LoginPanel.jsx +++ b/src/components/auth/LoginPanel.jsx @@ -174,8 +174,8 @@ const LoginPanel = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ - emailOrMobile: '', - password: '', + emailOrMobile: 'admin@gmail.com', + password: 'Password@123', keepLoggedIn: false, }) @@ -222,7 +222,11 @@ const LoginPanel = () => { setLoading(false) setSuccessModal(true) // Show success modal console.log('Form Data:', formData) + localStorage.setItem("token", "dummy-token"); + navigate("/dashboard-home"); }, 1500) + + } const handleCloseSuccessModal = () => { diff --git a/src/components/common/Footer.jsx b/src/components/common/Footer.jsx index 064d969..866dd1c 100644 --- a/src/components/common/Footer.jsx +++ b/src/components/common/Footer.jsx @@ -1,4 +1,5 @@ -import { Facebook, Instagram, Linkedin, Twitter, Youtube } from 'lucide-react'; +import { Facebook, Instagram, Linkedin, Twitter, Youtube } from "lucide-react"; +import { Link } from "react-router-dom"; export default function Footer() { return ( @@ -7,15 +8,66 @@ export default function Footer() {
{/* Need Help Section */}
-

Need Help?

+

+ Need Help? +

@@ -23,22 +75,87 @@ export default function Footer() {

Company

{/* Privacy & You Section */}
-

Privacy & You

+

+ Privacy & You +

@@ -46,48 +163,78 @@ export default function Footer() {

More

{/* Social Media & Apps Section */}
-

Find us on:

+

+ Find us on: +

- + - + - + - + - +
-

Get the Thirukalyanam App

+

+ Get the Thirukalyanam App +

- Download on App Store - Get it on Google Play @@ -104,16 +251,18 @@ export default function Footer() { {/* Bottom Copyright Section */}
-

- © 1991-{new Date().getFullYear()} Thirukalyanam, The World's Leading Matchmaking Service™ -

+

+ © {new Date().getFullYear()} Thirukalyanam, The World's + Leading Matchmaking Service™ +

- Passionately created by Amrithaa + Passionately created by{" "} + Amrithaa

); -} \ No newline at end of file +} diff --git a/src/components/common/ProfileHeader.jsx b/src/components/common/ProfileHeader.jsx index 0e306e1..bd5df70 100644 --- a/src/components/common/ProfileHeader.jsx +++ b/src/components/common/ProfileHeader.jsx @@ -18,14 +18,16 @@ import Modal from "@mui/material/Modal"; import Button from "@mui/material/Button"; import LazyImage from "./LazyImage"; import Logo from "../../assets/images/logo.png"; -import { useNavigate } from "react-router-dom"; +import { useLocation, useNavigate } from "react-router-dom"; import { useState, useRef, useEffect } from "react"; import { useTheme, useMediaQuery, ListItemIcon } from "@mui/material"; import { Home, Users, Heart, MessageCircle, Search, Bell } from "lucide-react"; - +import { isAuthenticated } from "../../utills/auth"; +import userimg from "../../assets/images/bride1.jpg" const NAV_LINKS = [ - { label: "Home", path: "/" }, + // { label: "Home", path: "/" }, { label: "Matches", path: "/matches" }, + // { label: "ProfileCard", path: "/profile-card" }, { label: "Interest", path: "/interest" }, { label: "Horoscope", path: "/horoscoper-generate" }, { label: "Messages", path: "/chat" }, @@ -53,17 +55,13 @@ const ACCOUNT_SETTINGS = [ { label: "Logout", action: "logout" } ]; -const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick }) => { +const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick, activeItem }) => { const [activeIndex, setActiveIndex] = useState(0); const [indicatorStyle, setIndicatorStyle] = useState({}); const [isAnimating, setIsAnimating] = useState(false); const navRef = useRef(null); const buttonRefs = useRef([]); - useEffect(() => { - updateIndicator(activeIndex); - }, []); - const updateIndicator = (index) => { const button = buttonRefs.current[index]; if (button && navRef.current) { @@ -76,20 +74,37 @@ const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick }) => { } }; + // sync with activeItem from router + useEffect(() => { + if (!activeItem) return; + const newIndex = items.indexOf(activeItem); + if (newIndex !== -1 && newIndex !== activeIndex) { + setActiveIndex(newIndex); + updateIndicator(newIndex); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeItem, items]); + + // initial indicator + useEffect(() => { + updateIndicator(activeIndex); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const handleClick = (index) => { if (index === activeIndex || isAnimating) return; setIsAnimating(true); const newButton = buttonRefs.current[index]; - + if (newButton && navRef.current) { const navRect = navRef.current.getBoundingClientRect(); const newRect = newButton.getBoundingClientRect(); - - setIndicatorStyle(prev => ({ + + setIndicatorStyle((prev) => ({ ...prev, - left: newRect.left - navRect.left + newRect.width / 2 - 18, + left: newRect.left - navRect.left + newRect.width / 2 - 18 })); - + setTimeout(() => { setActiveIndex(index); setIsAnimating(false); @@ -103,28 +118,23 @@ const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick }) => { {items.map((item, index) => ( ))} - +
@@ -132,7 +142,9 @@ const SparkleNavbar = ({ items, color = "#0fec1eff", onItemClick }) => { }; const ProfileHeader = () => { + const auth = isAuthenticated(); const navigate = useNavigate(); + const location = useLocation(); const [mobileDrawerOpen, setMobileDrawerOpen] = useState(false); const [profileDrawerOpen, setProfileDrawerOpen] = useState(false); const [deleteModalOpen, setDeleteModalOpen] = useState(false); @@ -145,6 +157,14 @@ const ProfileHeader = () => { const toggleProfileDrawer = (open) => () => setProfileDrawerOpen(open); const [selectedItem, setSelectedItem] = useState("Home"); + const currentNav = NAV_LINKS.find(link => + location.pathname.startsWith(link.path) + ); + + const currentLabel = currentNav?.label ?? NAV_LINKS[0].label; + + + const handleMenuClick = (item) => { if (item.action === "delete") { @@ -273,11 +293,11 @@ const ProfileHeader = () => { - + navigate("/")} sx={{ display: { xs: "none", md: "flex" }, mr: 1 }}> navigate("/")} + /> @@ -294,6 +314,7 @@ const ProfileHeader = () => { @@ -301,6 +322,7 @@ const ProfileHeader = () => { link.label)} color="#034E08" + activeItem={currentLabel} onItemClick={(item) => { setSelectedItem(item); const link = NAV_LINKS.find(l => l.label === item); @@ -309,13 +331,21 @@ const ProfileHeader = () => { /> - + {(auth ? ( + - + + + + ):( ))} + + + diff --git a/src/components/profiledashboard/AstroChatUI.jsx b/src/components/profiledashboard/AstroChatUI.jsx index 43ecd87..1fe8238 100644 --- a/src/components/profiledashboard/AstroChatUI.jsx +++ b/src/components/profiledashboard/AstroChatUI.jsx @@ -1,5 +1,7 @@ +import { useNavigate } from "react-router-dom"; import girlchat from "../../assets/images/girlchat.webp" const AstroChatUI = () => { + const navigate = useNavigate(); return ( <> @@ -26,7 +28,7 @@ const AstroChatUI = () => {

Astro - FreeChart + Horoscope

@@ -70,8 +72,10 @@ const AstroChatUI = () => {
{/* CTA Button */} - {/* Girl Image - Positioned at bottom right */} diff --git a/src/components/profiledashboard/MatrimonyArticles.jsx b/src/components/profiledashboard/MatrimonyArticles.jsx index 00bc7a4..1b8f13d 100644 --- a/src/components/profiledashboard/MatrimonyArticles.jsx +++ b/src/components/profiledashboard/MatrimonyArticles.jsx @@ -6,27 +6,34 @@ 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"; +import weddingImg1 from "../../assets/images/wedding6.jpeg"; +import weddingImg2 from "../../assets/images/wedding8.jpg"; +import weddingImg3 from "../../assets/images/wedding7.jpg"; + + const articleData = [ { title: "Marriage is not just finding the right partner, it's creating a lifetime of moments together Find someone who understands your heart and walks with you in every season.", - img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + img: weddingImg1, + }, { title: "Top 10 Qualities for a Happy Marriage, A perfect match begins with trust, respect, and shared dreams", - img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + img: weddingImg2 }, + { title: "Expert Tips for a Strong Relationship, A perfect match begins with trust, respect, and shared dreams", - img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + img: weddingImg3 }, { title: "How to Build Trust in Marriage, A perfect match begins with trust, respect, and shared dreams", - img: "https://images.unsplash.com/photo-1519744792095-2f2205e87b6f?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + img: weddingImg1 }, { title: "Communication Secrets for Couples, A perfect match begins with trust, respect, and shared dreams,A perfect match begins with trust, respect, and shared dreams.A perfect match begins with trust, respect, and shared dreams.A perfect match begins with trust, respect, and shared dreams,Real relationships are built on honesty, compassion, and understanding.,Real relationships are built on honesty, compassion, and understanding.", - img: "https://images.unsplash.com/photo-1482849297070-f4fae2173efe?ixlib=rb-4.0.3&auto=format&fit=crop&w=900&q=80" + img: weddingImg1 } ]; diff --git a/src/components/profiledashboard/PaidMemberCard.jsx b/src/components/profiledashboard/PaidMemberCard.jsx index f379ec1..e055f3c 100644 --- a/src/components/profiledashboard/PaidMemberCard.jsx +++ b/src/components/profiledashboard/PaidMemberCard.jsx @@ -1,6 +1,8 @@ +import { useNavigate } from "react-router-dom"; import membershipgirl from "../../assets/images/membership.avif"; const PaidMemberCard = () => { + const navigate = useNavigate(); return ( <> @@ -41,7 +43,9 @@ const PaidMemberCard = () => { {/* Button */} -
diff --git a/src/components/profiledashboard/ProfileCompletion.jsx b/src/components/profiledashboard/ProfileCompletion.jsx index a97d2f3..111c187 100644 --- a/src/components/profiledashboard/ProfileCompletion.jsx +++ b/src/components/profiledashboard/ProfileCompletion.jsx @@ -21,6 +21,7 @@ const ProfileCompletion = () => { bgColor: "bg-green-50", iconColor: "text-green-600", borderColor: "border-green-200", + url:"/profile-edit" }, { id: 2, @@ -29,6 +30,7 @@ const ProfileCompletion = () => { bgColor: "bg-purple-50", iconColor: "text-purple-600", borderColor: "border-purple-200", + url:"/horoscoper-generate" }, { id: 3, @@ -37,6 +39,7 @@ const ProfileCompletion = () => { bgColor: "bg-red-50", iconColor: "text-red-600", borderColor: "border-red-200", + url:"/profile-edit" }, ]; @@ -130,7 +133,10 @@ const ProfileCompletion = () => { {cards.map((card, index) => ( -
{/* Icon Container */} diff --git a/src/components/profiledashboard/VideoSwiperGallery.jsx b/src/components/profiledashboard/VideoSwiperGallery.jsx index 31dd14a..cfdd891 100644 --- a/src/components/profiledashboard/VideoSwiperGallery.jsx +++ b/src/components/profiledashboard/VideoSwiperGallery.jsx @@ -3,6 +3,9 @@ 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 weddingImg1 from "../../assets/images/wedding6.jpeg"; +import weddingImg2 from "../../assets/images/wedding8.jpg"; +import weddingImg3 from "../../assets/images/wedding6.jpeg"; // Import Swiper styles import 'swiper/css'; @@ -18,7 +21,7 @@ const VideoSwiperGallery = () => { { id: 1, title: 'Priya & Rahul - Wedding Story', - thumbnail: 'https://images.unsplash.com/photo-1519741497674-611481863552?w=600&h=400&fit=crop', + thumbnail: weddingImg1, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', views: '2.4K', likes: '142', @@ -27,7 +30,7 @@ const VideoSwiperGallery = () => { { id: 2, title: 'Aisha - Profile Introduction', - thumbnail: 'https://images.unsplash.com/photo-1606216794079-e48e3e2a3f6a?w=600&h=400&fit=crop', + thumbnail: weddingImg2, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', views: '1.8K', likes: '98', @@ -36,7 +39,7 @@ const VideoSwiperGallery = () => { { id: 3, title: 'Rohan - Life Journey', - thumbnail: 'https://images.unsplash.com/photo-1511285560929-80b456fea0bc?w=600&h=400&fit=crop', + thumbnail: weddingImg3, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', views: '3.2K', likes: '256', @@ -45,7 +48,7 @@ const VideoSwiperGallery = () => { { id: 4, title: 'Divya - Family Values', - thumbnail: 'https://images.unsplash.com/photo-1522673607200-164d1b6ce486?w=600&h=400&fit=crop', + thumbnail: weddingImg1, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', views: '1.5K', likes: '87', @@ -54,7 +57,7 @@ const VideoSwiperGallery = () => { { id: 5, title: 'Karthik & Meera - First Meet', - thumbnail: 'https://images.unsplash.com/photo-1583939003579-730e3918a45a?w=600&h=400&fit=crop', + thumbnail: weddingImg2, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4', views: '4.1K', likes: '312', @@ -63,7 +66,7 @@ const VideoSwiperGallery = () => { { id: 6, title: 'Sneha - Hobbies & Interests', - thumbnail: 'https://images.unsplash.com/photo-1465495976277-4387d4b0b4c6?w=600&h=400&fit=crop', + thumbnail: weddingImg3, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4', views: '2.7K', likes: '178', @@ -72,7 +75,7 @@ const VideoSwiperGallery = () => { { id: 7, title: 'Arjun - Career & Dreams', - thumbnail: 'https://images.unsplash.com/photo-1492691527719-9d1e07e534b4?w=600&h=400&fit=crop', + thumbnail: weddingImg1, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4', views: '1.9K', likes: '134', @@ -81,7 +84,7 @@ const VideoSwiperGallery = () => { { id: 8, title: 'Lakshmi - Traditional Values', - thumbnail: 'https://images.unsplash.com/photo-1606216794074-735e91aa2c92?w=600&h=400&fit=crop', + thumbnail: weddingImg2, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', views: '3.5K', likes: '267', @@ -90,7 +93,7 @@ const VideoSwiperGallery = () => { { id: 9, title: 'Vikram - Adventure Life', - thumbnail: 'https://images.unsplash.com/photo-1519167758481-83f29da8c4f3?w=600&h=400&fit=crop', + thumbnail: weddingImg3, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', views: '5.2K', likes: '423', @@ -99,7 +102,7 @@ const VideoSwiperGallery = () => { { id: 10, title: 'Anjali - Creative Journey', - thumbnail: 'https://images.unsplash.com/photo-1529626455594-4ff0802cfb7e?w=600&h=400&fit=crop', + thumbnail: weddingImg1, videoUrl: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', views: '3.8K', likes: '289', @@ -319,7 +322,7 @@ const VideoSwiperGallery = () => {
{/* View All Button */} - { > View All Videos - + */} {/* Video Modal */} diff --git a/src/components/ui/HeroSlider.jsx b/src/components/ui/HeroSlider.jsx new file mode 100644 index 0000000..b409f16 --- /dev/null +++ b/src/components/ui/HeroSlider.jsx @@ -0,0 +1,66 @@ +import { Swiper, SwiperSlide } from "swiper/react"; +import { Autoplay, Pagination, Navigation } from "swiper/modules"; + import god1 from "../../assets/images/god1.png"; + import god2 from "../../assets/images/perumal.png" + +import "swiper/css"; +import "swiper/css/pagination"; +import "swiper/css/navigation"; + +import "../../styles/heroSlider.css"; +import { useNavigate } from "react-router-dom"; + +const slides = [ + { + image: god1, + title: "Find Your Perfect Life Partner", + description: + "Trusted matches, meaningful connections, lifelong happiness.", + button: "Register Now", + }, + { + image: god2, + title: "Where True Love Begins", + description: + "Discover compatible matches made just for you. Start your journey today.", + button: "Register Now", + }, +]; + +const HeroSlider = () => { + const navigate = useNavigate(); + return ( + + {slides.map((slide, index) => ( + + +
+
+ {/* Left Image */} +
+ hero +
+ + {/* Right Content */} +
+

{slide.title}

+

{slide.description}

+ +
+
+
+
+ ))} +
+ ); +}; + +export default HeroSlider; diff --git a/src/components/ui/ProfileCardDemo.jsx b/src/components/ui/ProfileCardDemo.jsx new file mode 100644 index 0000000..f753298 --- /dev/null +++ b/src/components/ui/ProfileCardDemo.jsx @@ -0,0 +1,131 @@ +import React from "react"; +import { Heart, X, Crown, Bookmark } from "lucide-react"; +// Import your images +import Profile1 from "../../assets/images/bride1.jpg"; +import Profile2 from "../../assets/images/bride2.jpg"; +import Profile3 from "../../assets/images/bride3.jpg"; +import Profile4 from "../../assets/images/bride4.jpg"; + +export default function ProfileCardDemo() { + // Sample data for multiple cards with image paths + const profiles = [ + { + id: 1, + name: "Jerome Bell", + age: "22 yrs", + height: "5'2\"", + location: "Chennai", + caste: "Brahmin", + zodiac1: "Aries", + zodiac2: "Scorpio", + image: Profile1, + }, + { + id: 2, + name: "Neha Singh", + age: "26 yrs", + height: "5'6\"", + location: "Delhi", + caste: "Brahmin", + zodiac1: "Aries", + zodiac2: "Scorpio", + image: Profile2, + }, + { + id: 3, + name: "Priya Sharma", + age: "24 yrs", + height: "5'4\"", + location: "Mumbai", + caste: "Brahmin", + zodiac1: "Aries", + zodiac2: "Scorpio", + image: Profile3, + }, + { + id: 4, + name: "Kavya Iyer", + age: "23 yrs", + height: "5'3\"", + location: "Bangalore", + caste: "Brahmin", + zodiac1: "Aries", + zodiac2: "Scorpio", + image: Profile4, + }, + ]; + + return ( +
+ {/* Grid Container - max-w-[1400px] with 4 columns */} +
+ {profiles.map((profile) => ( +
+ {/* IMAGE SECTION */} +
+ profile + + {/* LEFT ICON (CROWN) */} +
+ +
+ + {/* RIGHT ICON (SHORTLIST) */} +
+ Shortlist +
+ + {/* FADE FOR GLASS */} +
+
+ + {/* GLASS CONTENT */} +
+

+ {profile.name} +

+ + {/* INFO PILLS */} +
+ {[ + profile.age, + profile.height, + profile.location, + profile.caste, + profile.zodiac1, + profile.zodiac2, + ].map((v, i) => ( + + {v} + + ))} +
+ + {/* ACTION BUTTONS */} +
+ + + +
+
+ +
+ ))} +
+
+ ); +} \ No newline at end of file diff --git a/src/feature/LifestyleDetailsForm.jsx b/src/feature/LifestyleDetailsForm.jsx index edc4946..c30501d 100644 --- a/src/feature/LifestyleDetailsForm.jsx +++ b/src/feature/LifestyleDetailsForm.jsx @@ -30,16 +30,16 @@ const LifestyleDetailsForm = ({ onSubmitStep, onSkipStep, errors }) => { const fields = [ { name: "diet", label: "Diet", options: ["Veg", "Non-Veg", "Eggetarian"] }, - { - name: "drinking", - label: "Drinking Habits", - options: ["No", "Occasionally", "Regularly"], - }, - { - name: "smoking", - label: "Smoking Habits", - options: ["No", "Occasionally", "Regularly"], - }, + // { + // name: "drinking", + // label: "Drinking Habits", + // options: ["No", "Occasionally", "Regularly"], + // }, + // { + // name: "smoking", + // label: "Smoking Habits", + // options: ["No", "Occasionally", "Regularly"], + // }, { name: "hobbies", label: "Hobbies & Interests", diff --git a/src/feature/ProfilePreviewPage.jsx b/src/feature/ProfilePreviewPage.jsx index 8a63550..90caa79 100644 --- a/src/feature/ProfilePreviewPage.jsx +++ b/src/feature/ProfilePreviewPage.jsx @@ -299,8 +299,8 @@ const ProfilePreviewPage = () => { {renderField("Diet", lifestyleDetails.diet)} - {renderField("Drinking", lifestyleDetails.drinking)} - {renderField("Smoking", lifestyleDetails.smoking)} + {/* {renderField("Drinking", lifestyleDetails.drinking)} + {renderField("Smoking", lifestyleDetails.smoking)} */} {renderField("Hobbies", lifestyleDetails.hobbies)} diff --git a/src/layout/HomeLayout.jsx b/src/layout/HomeLayout.jsx new file mode 100644 index 0000000..dd95537 --- /dev/null +++ b/src/layout/HomeLayout.jsx @@ -0,0 +1,21 @@ +import { Outlet } from "react-router-dom"; +import ProfileHeader from "../components/common/ProfileHeader"; +import Footer from "../components/common/Footer"; + +const HomeLayout = () => { + return ( + <> + + {/*
*/} + + {/*
*/} + +