diff --git a/package-lock.json b/package-lock.json index 10f0912..2b9a12c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -398,7 +398,6 @@ "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" } diff --git a/src/assets/images/banner1.png b/src/assets/images/banner1.png new file mode 100644 index 0000000..a0d98ff Binary files /dev/null and b/src/assets/images/banner1.png differ diff --git a/src/assets/images/contactimg.jpg b/src/assets/images/contactimg.jpg new file mode 100644 index 0000000..7c6d32d Binary files /dev/null and b/src/assets/images/contactimg.jpg differ diff --git a/src/assets/images/safegirl.jpg b/src/assets/images/safegirl.jpg new file mode 100644 index 0000000..ec3f8bf Binary files /dev/null and b/src/assets/images/safegirl.jpg differ diff --git a/src/components/auth/ChangePasswordForm.jsx b/src/components/auth/ChangePasswordForm.jsx index 2c0f0c1..85bffe8 100644 --- a/src/components/auth/ChangePasswordForm.jsx +++ b/src/components/auth/ChangePasswordForm.jsx @@ -313,7 +313,7 @@ const ChangePasswordPage = () => { { { > {/* Header */} - - - + Change Password @@ -548,25 +547,28 @@ const ChangePasswordPage = () => { {/* Submit Button */} ))} - {/* Underline only - no dots */}
{ ); }; -/* ---------------------------------------------------- - MAIN COMPONENT — UPDATED WITH PROFILE DRAWER ----------------------------------------------------- */ const ProfileHeader = () => { const navigate = useNavigate(); const [mobileDrawerOpen, setMobileDrawerOpen] = useState(false); const [profileDrawerOpen, setProfileDrawerOpen] = useState(false); + const [deleteModalOpen, setDeleteModalOpen] = useState(false); + const [logoutModalOpen, setLogoutModalOpen] = useState(false); const theme = useTheme(); const isDesktop = useMediaQuery(theme.breakpoints.up("md")); @@ -131,9 +143,52 @@ const ProfileHeader = () => { const toggleProfileDrawer = (open) => () => setProfileDrawerOpen(open); const [selectedItem, setSelectedItem] = useState("Home"); - /* ----------------------------------------- - PROFILE DRAWER CONTENT (RIGHT SIDE) - ------------------------------------------ */ + + const handleMenuClick = (item) => { + if (item.action === "delete") { + setDeleteModalOpen(true); + setProfileDrawerOpen(false); + } else if (item.action === "logout") { + setLogoutModalOpen(true); + setProfileDrawerOpen(false); + } else if (item.path) { + navigate(item.path); + setProfileDrawerOpen(false); + } + }; + + const handleDeleteAccount = () => { + // Add your delete account logic here + console.log("Account deleted"); + setDeleteModalOpen(false); + navigate("/"); + }; + + const handleLogout = () => { + // Add your logout logic here + console.log("Logged out"); + setLogoutModalOpen(false); + navigate("/login"); + }; + + const modalStyle = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: isDesktop ? 400 : '90%', + bgcolor: 'background.paper', + borderRadius: 2, + boxShadow: 24, + p: 4, + }; + + const getNavIcon = (index) => { + const icons = [Home, Users, Heart, MessageCircle, Search, Bell]; + const IconComponent = icons[index % icons.length]; + return ; + }; + const ProfileDrawerContent = ( { - {[ - "Profile", - "Subscription", - "Subscription History", - "Change Password", - "View Reports", - "Blocked Users", - ].map((text) => ( - - - + {PROFILE_MENU.map((item) => ( + + handleMenuClick(item)}> + ))} @@ -176,17 +224,10 @@ const ProfileHeader = () => { - {[ - "Privacy Policy", - "Terms & Conditions", - "Contact Us", - "Be Safe Online", - "Delete Account", - "Logout", - ].map((text) => ( - - - + {ACCOUNT_SETTINGS.map((item) => ( + + handleMenuClick(item)}> + ))} @@ -194,9 +235,6 @@ const ProfileHeader = () => { ); - /* ----------------------------------------- - MOBILE LEFT DRAWER - ------------------------------------------ */ const MobileDrawerMenu = ( @@ -218,7 +256,7 @@ const ProfileHeader = () => { }} > - {index % 2 === 0 ? : } + {getNavIcon(index)} @@ -230,26 +268,23 @@ const ProfileHeader = () => { return ( <> - {/* --------------------------- NAVBAR ----------------------------- */} - {/* Desktop Logo */} navigate("/")} /> - {/* MOBILE: Menu Button */} - {/* Mobile Logo */} navigate("/")} @@ -260,21 +295,18 @@ const ProfileHeader = () => { /> - {/* Desktop Menu */} - link.label)} - color="#034E08" - onItemClick={(item) => { - setSelectedItem(item); - const link = NAV_LINKS.find(l => l.label === item); - if (link) navigate(link.path); - }} -/> - + 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 */} @@ -286,7 +318,6 @@ const ProfileHeader = () => { - {/* MOBILE LEFT DRAWER */} { {MobileDrawerMenu} - {/* PROFILE RIGHT DRAWER */} { > {ProfileDrawerContent} + + {/* Delete Account Modal */} + setDeleteModalOpen(false)} + aria-labelledby="delete-modal-title" + > + + + + Delete Account + + setDeleteModalOpen(false)} size="small"> + + + + + Are you sure you want to delete your account? This action cannot be undone. + + + + + + + + + {/* Logout Modal */} + setLogoutModalOpen(false)} + aria-labelledby="logout-modal-title" + > + + + + Logout + + setLogoutModalOpen(false)} size="small"> + + + + + Are you sure you want to logout? + + + + + + + ); }; -export default ProfileHeader; +export default ProfileHeader; \ No newline at end of file diff --git a/src/pages/AccountSettingsPage.jsx b/src/pages/AccountSettingsPage.jsx index 8b72c09..79a3590 100644 --- a/src/pages/AccountSettingsPage.jsx +++ b/src/pages/AccountSettingsPage.jsx @@ -69,7 +69,7 @@ const SettingItem = ({ title, description, enabled, onToggle }) => ( ); const TabContent = ({ title, settings, states, onToggle }) => ( - + { + const [selectedChat, setSelectedChat] = useState(null); + const [message, setMessage] = useState(''); + const [showChatOnMobile, setShowChatOnMobile] = useState(false); + const [showCallHistory, setShowCallHistory] = useState(false); + const [showMenu, setShowMenu] = useState(false); + const [showChatMenu, setShowChatMenu] = useState(false); + + const contacts = [ + { + id: 1, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 2, + name: 'Sabitha', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Sabitha', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 3, + name: 'Lia', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lia', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 4, + name: 'Moi', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Moi', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 5, + name: 'Sri', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Sri', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 6, + name: 'Lyana', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lyana', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 7, + name: 'Lyana', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lyana', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 8, + name: 'Lyana', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lyana', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 9, + name: 'Lyana', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lyana', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + }, + { + id: 10, + name: 'Lyana', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lyana', + lastMessage: 'Hi bro!n how are you Long time no see', + time: '10 Nov 2025, 10 : 23 AM', + online: false + } + ]; + + const messages = { + 1: [ + { + id: 1, + sender: 'other', + text: 'Let\'s do it! I\'m in a meeting until noon.', + time: '10 Nov', + isDate: false + }, + { + id: 2, + sender: 'me', + text: 'That\'s perfect! There\'s a new place on Main St I\'ve been wanting to check out. I hear their hawaiian pizza is awesome!', + time: '07:21', + isDate: false + }, + { + id: 3, + sender: 'date', + text: 'Today', + isDate: true + }, + { + id: 4, + sender: 'me', + text: 'Can\'s get lunch. How about tomorrow?', + time: '09:42', + isDate: false + }, + { + id: 5, + sender: 'other', + text: 'Let\'s do it! I\'m in a meeting until noon.', + time: '', + isDate: false + }, + { + id: 6, + sender: 'me', + text: 'That\'s perfect! There\'s a new place on Main St I\'ve been wanting to check out. I hear their hawaiian pizza is awesome!', + time: '', + isDate: false + } + ] + }; + + const callHistory = [ + { + id: 1, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + status: 'Incoming call', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 2, + name: 'Lia', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Lia', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 3, + name: 'Moi', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Moi', + status: 'Incoming call', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 4, + name: 'Sri', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Sri', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 5, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 6, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 7, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + }, + { + id: 8, + name: 'Kalai', + avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Kalai', + status: 'Outgoing', + time: '10 : 00 AM', + date: 'Today' + } + ]; + + const [chatMessages, setChatMessages] = useState({ + 1: [ + { id: 1, sender: 'other', text: "Let's do it! I'm in a meeting until noon.", time: '10 Nov', isDate: false , read: false }, + { id: 2, sender: 'me', text: "That's perfect! There's a new place...", time: '07:21', isDate: false , read: false }, + { id: 3, sender: 'date', text: 'Today', isDate: true, read: true | false }, + { id: 4, sender: 'me', text: "Can's get lunch. How about tomorrow?", time: '09:42', isDate: false , read: true }, + { id: 5, sender: 'other', text: "Let's do it! I'm in a meeting until noon.", time: '', isDate: false, read: true }, + { id: 6, sender: 'me', text: "That's perfect! There's a new place...", time: '', isDate: false, read: true }, + ], + // 2,3,... if needed +}); + + + const handleSendMessage = () => { + if (!message.trim() || !selectedChat) return; + + const now = new Date(); + const timeString = now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + + setChatMessages(prev => { + const prevMsgs = prev[selectedChat] || []; + const newMsg = { + id: prevMsgs.length ? prevMsgs[prevMsgs.length - 1].id + 1 : 1, + sender: 'me', + text: message.trim(), + time: timeString, + isDate: false, + }; + + return { + ...prev, + [selectedChat]: [...prevMsgs, newMsg], + }; + }); + + setMessage(''); +}; + + + const handleChatSelect = (contactId) => { + setSelectedChat(contactId); + setShowChatOnMobile(true); + setShowCallHistory(false); + }; + + const handleBackToList = () => { + setShowChatOnMobile(false); + setShowCallHistory(false); + setShowChatMenu(false); + }; + + const handleCallHistoryClick = () => { + setShowCallHistory(true); + setShowChatOnMobile(false); + setShowMenu(false); + }; + + return ( +
+ {/* Sidebar - Chat List */} +
+ {/* Header */} +
+
+

Chat

+
+ + + {showMenu && ( +
+ + +
+ )} +
+
+ + {/* Search */} +
+ + +
+
+ + {/* Contact List */} +
+ {contacts.map((contact) => ( +
handleChatSelect(contact.id)} + className={`flex items-center gap-3 p-4 cursor-pointer hover:bg-gray-50 border-b border-gray-100 ${ + selectedChat === contact.id ? 'bg-blue-50' : '' + }`} + > +
+ {contact.name} + {contact.online && ( +
+ )} +
+
+
+

{contact.name}

+ {contact.time} +
+

+ {contact.lastMessage} +

+
+
+ ))} +
+
+ + {/* Call History View */} + {showCallHistory && ( +
+ {/* Call History Header */} +
+
+
+ +
+ User +
+

Dalahamanner-Hv

+

ID: TKS258AA

+
+
+
+
+ + +
+
+
+ + {/* Filter Tabs */} +
+ + + +
+ + {/* Call History List */} +
+
+

Today

+ {callHistory.map((call) => ( +
+ {call.name} +
+

{call.name}

+
+ + {call.status} +
+
+ {call.time} +
+ ))} +
+
+
+ )} + + {/* Chat Area */} + {selectedChat && !showCallHistory && ( +
+ {/* Chat Header */} +
+
+ + c.id === selectedChat)?.avatar} + alt="Avatar" + className="w-10 h-10 rounded-full" + /> +
+

+ Priya +

+
+
+ Online +
+
+
+
+ +
+ + + {showChatMenu && ( +
+ + + + +
+ )} +
+
+
+ + {/* Messages */} +
+ {chatMessages[selectedChat]?.map((msg) => ( +
+ {msg.isDate ? ( +
+ {msg.text} +
+ ) : ( +
+
+

{msg.text}

+
+ {msg.time && ( +
+ + {msg.time} + + + + +
+ )} + + +{msg.sender === 'me' && ( +
+ {msg.time} + {msg.read ? ( + + ) : ( + + )} +
+)} + + + + +
+
+
+ )} +
+ ))} +
+ + {/* Message Input */} +
+
+ setMessage(e.target.value)} + onKeyPress={(e) => e.key === 'Enter' && handleSendMessage()} + placeholder="Start Typing..." + className="flex-1 px-4 py-2.5 border border-gray-300 rounded-lg focus:outline-none focus:border-[#034E08]" + /> + +
+
+
+ )} + + {/* Empty State */} + {!selectedChat && !showCallHistory && ( +
+

Select a conversation to start messaging

+
+ )} +
+ ); +}; + +export default ChatUI; \ No newline at end of file diff --git a/src/pages/ContactUsPage.jsx b/src/pages/ContactUsPage.jsx new file mode 100644 index 0000000..b8dafcb --- /dev/null +++ b/src/pages/ContactUsPage.jsx @@ -0,0 +1,111 @@ +import { useState } from 'react'; +import contactimg from "../assets/images/contactimg.jpg"; +import LazyImage from '../components/common/LazyImage'; + +import InstagramIcon from '@mui/icons-material/Instagram'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import TwitterIcon from '@mui/icons-material/Twitter'; +import CloseIcon from '@mui/icons-material/Close'; // using as X icon +import SvgIcon from "@mui/material/SvgIcon"; + +function XIcon(props) { + return ( + + + + ); +} + +const ContactUsPage = () => { + + + + +const socialLinks = [ + { name: "Instagram", icon: , color: "from-purple-500 to-[#d93f87]", url: "#" }, + { name: "Facebook", icon: , color: "from-blue-900 to-blue-800", url: "#" }, + { name: "Twitter", icon: , color: "from-blue-400 to-blue-500", url: "#" }, + { name: "X", icon: , color: "from-gray-800 to-black", url: "#" }, +]; + + return ( +
+
+ + + +
+ + {/* Get in touch section */} +
+

Get in touch

+

+ If you have inquiries get in touch with us we'll happy to help you +

+
+ + {/* Contact Information Cards */} + + + {/* Social Media Section */} +
+

Social Media

+
+ {socialLinks.map((social, idx) => ( + + {social.icon} + + ))} +
+
+ + + +
+
+ +
+ ); +}; + +export default ContactUsPage; \ No newline at end of file diff --git a/src/pages/HoroscoperGeneratePage.jsx b/src/pages/HoroscoperGeneratePage.jsx new file mode 100644 index 0000000..4ae0571 --- /dev/null +++ b/src/pages/HoroscoperGeneratePage.jsx @@ -0,0 +1,234 @@ +import { useState } from 'react'; + +const HoroscopeGenerator = () => { + const [dob, setDob] = useState(''); + const [showHoroscope, setShowHoroscope] = useState(false); + + const rasiPositions = [ + { id: 1, label: 'Rasi', position: 'top-left' }, + { id: 2, label: 'Rasi', position: 'top-center-left' }, + { id: 3, label: 'Rasi', position: 'top-center-right' }, + { id: 4, label: 'Rasi', position: 'top-right' }, + { id: 5, label: 'Rasi', position: 'middle-left' }, + { id: 6, label: 'Rasi', position: 'middle-right' }, + { id: 7, label: 'Rasi', position: 'bottom-left' }, + { id: 8, label: 'Rasi', position: 'bottom-center-left' }, + { id: 9, label: 'Rasi', position: 'bottom-center-right' }, + { id: 10, label: 'Rasi', position: 'bottom-right' }, + ]; + + const navamsaPositions = [ + { id: 1, label: 'Navamsam', position: 'top-left' }, + { id: 2, label: 'Navamsam', position: 'top-center-left' }, + { id: 3, label: 'Navamsam', position: 'top-center-right' }, + { id: 4, label: 'Navamsam', position: 'top-right' }, + { id: 5, label: 'Navamsam', position: 'middle-left' }, + { id: 6, label: 'Navamsam', position: 'middle-right' }, + { id: 7, label: 'Navamsam', position: 'bottom-left' }, + { id: 8, label: 'Navamsam', position: 'bottom-center-left' }, + { id: 9, label: 'Navamsam', position: 'bottom-center-right' }, + { id: 10, label: 'Navamsam', position: 'bottom-right' }, + ]; + + const zodiacSigns = [ + { name: 'Aries', emoji: '♈' }, + { name: 'Taurus', emoji: '♉' }, + { name: 'Gemini', emoji: '♊' }, + { name: 'Cancer', emoji: '♋' }, + { name: 'Leo', emoji: '♌' }, + { name: 'Virgo', emoji: '♍' }, + { name: 'Libra', emoji: '♎' }, + { name: 'Scorpio', emoji: '♏' }, + { name: 'Sagittarius', emoji: '♐' }, + { name: 'Capricorn', emoji: '♑' }, + { name: 'Aquarius', emoji: '♒' }, + { name: 'Pisces', emoji: '♓' } + ]; + + const getZodiacSign = (date) => { + const month = date.getMonth() + 1; + const day = date.getDate(); + + if ((month === 3 && day >= 21) || (month === 4 && day <= 19)) return 0; + if ((month === 4 && day >= 20) || (month === 5 && day <= 20)) return 1; + if ((month === 5 && day >= 21) || (month === 6 && day <= 20)) return 2; + if ((month === 6 && day >= 21) || (month === 7 && day <= 22)) return 3; + if ((month === 7 && day >= 23) || (month === 8 && day <= 22)) return 4; + if ((month === 8 && day >= 23) || (month === 9 && day <= 22)) return 5; + if ((month === 9 && day >= 23) || (month === 10 && day <= 22)) return 6; + if ((month === 10 && day >= 23) || (month === 11 && day <= 21)) return 7; + if ((month === 11 && day >= 22) || (month === 12 && day <= 21)) return 8; + if ((month === 12 && day >= 22) || (month === 1 && day <= 19)) return 9; + if ((month === 1 && day >= 20) || (month === 2 && day <= 18)) return 10; + return 11; + }; + + const handleGenerate = () => { + if (dob) { + setShowHoroscope(true); + } + }; + + const userZodiacIndex = dob ? getZodiacSign(new Date(dob)) : -1; + + const ChartBox = ({ label, onClick }) => ( +
+ + + + + + {label} +
+ ); + + return ( +
+
+ {/* Header */} +
+

+ Astrology / Horoscope +

+
+ + {/* Date Input Section */} +
+ +
+ setDob(e.target.value)} + className="w-full px-4 py-3 bg-gray-50 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 text-gray-800" + /> +
+
+ +
+ +
+ + {/* Add Rasi Section */} +
+

+ Add Rasi +

+ + {/* Rasi Chart Grid */} +
+ {/* Top Row - 4 boxes */} + {}} /> + {}} /> + {}} /> + {}} /> + + {/* Middle Row - Left box, Center image, Right box */} + {}} /> +
+
+ Horoscope Chart +
+
+ {}} /> + + {/* Middle Row 2 - Left box continues, Right box continues */} + {}} /> + {}} /> + + {/* Bottom Row - 4 boxes */} + {}} /> + {}} /> + {}} /> + {}} /> +
+
+ +
+ +
+ + {/* Add Navamsam Section */} +
+

+ Add Navamsam +

+ + {/* Navamsam Chart Grid */} +
+ {/* Top Row - 4 boxes */} + {}} /> + {}} /> + {}} /> + {}} /> + + {/* Middle Row - Left box, Center image, Right box */} + {}} /> +
+
+ Navamsam Chart +
+
+ {}} /> + + {/* Middle Row 2 */} + {}} /> + {}} /> + + {/* Bottom Row - 4 boxes */} + {}} /> + {}} /> + {}} /> + {}} /> +
+
+ +
+ +
+ + + + + + {/* Working Hours Button */} +
+ +
+ + {/* Result Display */} + {showHoroscope && userZodiacIndex >= 0 && ( +
+
+
{zodiacSigns[userZodiacIndex].emoji}
+
+ Your Zodiac Sign: {zodiacSigns[userZodiacIndex].name} +
+
+
+ )} +
+
+ ); +}; + +export default HoroscopeGenerator; \ No newline at end of file diff --git a/src/pages/PoliciesPage.jsx b/src/pages/PoliciesPage.jsx index efdfd1b..e312e4b 100644 --- a/src/pages/PoliciesPage.jsx +++ b/src/pages/PoliciesPage.jsx @@ -10,22 +10,20 @@ export default function PoliciesPage() { const navigate = useNavigate(); return ( -
+
{/* Green Luxury Header */}
- +
- +

Policies

Your Safety Is Our First Priority

@@ -34,7 +32,7 @@ export default function PoliciesPage() {
-
+
@@ -52,13 +50,13 @@ export default function PoliciesPage() {

{text}

- +

Protected With Love & Care

-

Every profile, every chat, every dream — safeguarded 24×7.

+

Every profile, every chat, every dream — safeguarded 24×7.

- - - + + +
diff --git a/src/pages/SafetyCentre.jsx b/src/pages/SafetyCentre.jsx index 74c1d7b..2fb34a1 100644 --- a/src/pages/SafetyCentre.jsx +++ b/src/pages/SafetyCentre.jsx @@ -3,7 +3,8 @@ import React from 'react'; import { ArrowBackIosNew, Security, Report, Lock, Psychology } from '@mui/icons-material'; import { useNavigate } from 'react-router-dom'; import { motion } from 'framer-motion'; - +import LazyImage from '../components/common/LazyImage'; +import safegirl from "../assets/images/safegirl.jpg"; const dummyImage = "https://images.unsplash.com/photo-1594736797933-d0501ba2fe65?w=800&q=80&fit=crop"; export default function SafetyCentre() { @@ -37,59 +38,49 @@ export default function SafetyCentre() { ]; return ( -
+
{/* Premium Header */} -
- +
+

Be Safe Online

{/* Hero Section */} -
+ +
+ +

Safety Centre

-

+

Your safety matters deeply at Thirukalyanam. Our team works with advanced tools to ensure your matchmaking journey remains secure and safe.

+ - {/* Beautiful Hero Image */} - - Safe Matrimony -
-
-
- Is Online Matrimony - Safe? - Yes -
-
- +
+ + + + {/* Safety Tips Grid */} -
+
{safetyTips.map((tip, index) => (

You're Never Alone

-

+

Our 24×7 Safety Team is always watching. One tap to report — and we take immediate action.

- - - + + +
diff --git a/src/pages/SubscriptionHistory.jsx b/src/pages/SubscriptionHistory.jsx index 9154f09..970cb00 100644 --- a/src/pages/SubscriptionHistory.jsx +++ b/src/pages/SubscriptionHistory.jsx @@ -31,6 +31,19 @@ const subscriptions = [ paymentMethod: "UPI Mode", amount: 1800, isActive: false + }, + + { id: "SUB722HSN", + plan: "Gold Plan", + profileCount: 150, + usedCount: 70, + billingCycle: "Monthly", + expireDate: "19/11/2025", + startDate: "19/10/2025", + startTime: "10:00 AM", + paymentMethod: "UPI Mode", + amount: 1800, + isActive: false } ]; @@ -38,20 +51,15 @@ export default function SubscriptionHistory() { const navigate = useNavigate(); return ( -
+
{/* Royal Header */}
- +

Subscription History

@@ -69,82 +77,83 @@ export default function SubscriptionHistory() {
+
{/* Subscription Cards */} -
+
{subscriptions.map((sub, index) => ( {/* Crown Badge */} -
- + {sub.plan} - {sub.isActive && ACTIVE} + {sub.isActive && ACTIVE}
-
+
{/* Subscription ID */}

Subscription ID

-

{sub.id}

+

{sub.id}

{/* Stats Row */} -
-
+
+
-

{sub.profileCount}

+

{sub.profileCount}

Profile Count

-
+
-

{sub.usedCount}

+

{sub.usedCount}

Used Count

{/* Details Grid */} -
-
- +
+
+ Billing Cycle - {sub.billingCycle} + {sub.billingCycle}
-
- +
+ Expire Date - {sub.expireDate} + {sub.expireDate}
-
- +
+ Start Date & Time - {sub.startDate} | {sub.startTime} + {sub.startDate} | {sub.startTime}
-
- +
+ Payment Method - {sub.paymentMethod} + {sub.paymentMethod}
{/* Total Amount */} -
+

Total Plan Amount

-

+

₹{sub.amount.toLocaleString()}

@@ -152,9 +161,9 @@ export default function SubscriptionHistory() { ))}
- +
{/* Final Message */} -

Your journey to forever is fully powered

Enjoy unlimited matches with your Gold Plan

-
+ */}
); } \ No newline at end of file diff --git a/src/pages/SubscriptionPlan.jsx b/src/pages/SubscriptionPlan.jsx index 4317680..1bf3893 100644 --- a/src/pages/SubscriptionPlan.jsx +++ b/src/pages/SubscriptionPlan.jsx @@ -61,19 +61,17 @@ export default function SubscriptionPlan() { ]; return ( -
+
{/* Luxury Header */} -
+
- -

Subscription Plan

+ +

Subscription Plan

@@ -82,7 +80,8 @@ export default function SubscriptionPlan() {
+
- +

Terms & Conditions

-

Your Trust, Our Promise

+

Your Trust, Our Promise

@@ -49,7 +42,7 @@ export default function TermsAndCondition() { {/* Luxury Content Cards with Gold Accents */} -
+

We Are Here For Your Forever

-

+

Every relationship built here is protected with love, trust, and complete privacy.

- - - + + +
diff --git a/src/routes/PublicRoutes.jsx b/src/routes/PublicRoutes.jsx index 68bcafb..4679784 100644 --- a/src/routes/PublicRoutes.jsx +++ b/src/routes/PublicRoutes.jsx @@ -14,7 +14,7 @@ const PublicRoutes = () => { } /> } /> - } /> + ) diff --git a/src/routes/UserRoutes.jsx b/src/routes/UserRoutes.jsx index 5085d39..3649d37 100644 --- a/src/routes/UserRoutes.jsx +++ b/src/routes/UserRoutes.jsx @@ -11,6 +11,10 @@ import InterestSendPage from "../pages/InterestSendPage"; import BlockedProfileListPage from "../pages/BlockedProfileListPage"; import AccountSettingPage from "../pages/AccountSettingsPage"; import ProfileDetailPage from "../pages/ProfileDetailPage"; +import ChatUI from "../pages/ChatPage"; +import HoroscopeGenerator from "../pages/HoroscoperGeneratePage"; +import ContactUsPage from "../pages/ContactUsPage"; +import ChangePasswordPage from "../components/auth/ChangePasswordForm"; const UserRoutes = () => { @@ -26,10 +30,27 @@ const UserRoutes = () => { }> } /> + + }> + } /> + + + }> + } /> + + + + }> } /> + }> + } /> + + + + }> } /> @@ -40,10 +61,13 @@ const UserRoutes = () => { } /> }> - } /> + } /> }> - } /> + } /> + + }> + } /> }> } />