From 78607dad9a50eec94d6d479ee797dfc86bf1891a Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:27 +0000 Subject: [PATCH 1/8] Add src/app/booking/page.tsx --- src/app/booking/page.tsx | 379 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 379 insertions(+) create mode 100644 src/app/booking/page.tsx diff --git a/src/app/booking/page.tsx b/src/app/booking/page.tsx new file mode 100644 index 0000000..68116e0 --- /dev/null +++ b/src/app/booking/page.tsx @@ -0,0 +1,379 @@ +"use client"; + +import Link from "next/link"; +import { Calendar, Clock, Users, Check, X, Phone, Mail } from "lucide-react"; +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +export default function BookingPage() { + const [selectedDate, setSelectedDate] = useState(""); + const [selectedTime, setSelectedTime] = useState(""); + const [sessionType, setSessionType] = useState("guided-aarti"); + const [participants, setParticipants] = useState(1); + const [bookingStep, setBookingStep] = useState<"calendar" | "time" | "details" | "confirmation">("calendar"); + const [bookingData, setBookingData] = useState(null); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Features", id: "features" }, + { name: "AI Models", id: "models" }, + { name: "Pricing", id: "pricing" }, + { name: "About", id: "about" }, + { name: "Booking", id: "booking" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "/#features" }, + { label: "Pricing", href: "/#pricing" }, + { label: "AI Models", href: "/#models" }, + { label: "Booking", href: "/booking" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/#about" }, + { label: "Contact", href: "/#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + const availableDates = generateNextDates(14); + const timeSlots = [ + { time: "06:00 AM", label: "Early Morning" }, + { time: "07:00 AM", label: "Morning" }, + { time: "12:00 PM", label: "Noon" }, + { time: "03:00 PM", label: "Afternoon" }, + { time: "06:00 PM", label: "Evening" }, + { time: "07:00 PM", label: "Night" }, + ]; + + const sessionTypes = [ + { id: "guided-aarti", name: "Guided Aarti Session", price: "$15", duration: "30 mins" }, + { id: "mantra-learning", name: "Mantra Learning", price: "$12", duration: "25 mins" }, + { id: "ritual-planning", name: "Ritual Planning Session", price: "$20", duration: "45 mins" }, + { id: "group-ceremony", name: "Group Ceremony", price: "$30", duration: "60 mins" }, + ]; + + function generateNextDates(days: number) { + const dates = []; + for (let i = 1; i <= days; i++) { + const date = new Date(); + date.setDate(date.getDate() + i); + dates.push(date); + } + return dates; + } + + function handleDateSelect(date: Date) { + setSelectedDate(date.toISOString().split("T")[0]); + setBookingStep("time"); + } + + function handleTimeSelect(time: string) { + setSelectedTime(time); + setBookingStep("details"); + } + + function handleConfirmBooking() { + setBookingData({ + date: selectedDate, + time: selectedTime, + sessionType, + participants, + }); + setBookingStep("confirmation"); + } + + function handleNewBooking() { + setSelectedDate(""); + setSelectedTime(""); + setSessionType("guided-aarti"); + setParticipants(1); + setBookingStep("calendar"); + setBookingData(null); + } + + return ( + + + +
+
+ {/* Header */} +
+

Book Your Guided Aarti Session

+

+ Schedule personalized aarti guidance with our AI-powered spiritual experts +

+
+ + {/* Progress Steps */} +
+
= 0 + ? "bg-blue-100 dark:bg-blue-900 text-blue-900 dark:text-blue-100" + : "bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-400" + }`}> + + Select Date +
+
= 0 + ? "bg-blue-100 dark:bg-blue-900 text-blue-900 dark:text-blue-100" + : "bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-400" + }`}> + + Select Time +
+
= 0 + ? "bg-blue-100 dark:bg-blue-900 text-blue-900 dark:text-blue-100" + : "bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-400" + }`}> + + Session Details +
+
+ + Confirmation +
+
+ + {/* Calendar Step */} + {bookingStep === "calendar" && ( +
+

Select Your Preferred Date

+
+ {availableDates.map((date, idx) => ( + + ))} +
+
+ )} + + {/* Time Slots Step */} + {bookingStep === "time" && selectedDate && ( +
+

Select Your Preferred Time

+

+ Selected Date: {new Date(selectedDate).toLocaleDateString("en-US", { weekday: "long", month: "long", day: "numeric" })} +

+
+ {timeSlots.map((slot, idx) => ( + + ))} +
+
+ )} + + {/* Session Details Step */} + {bookingStep === "details" && selectedDate && selectedTime && ( +
+

Session Details

+ + {/* Session Type Selection */} +
+ +
+ {sessionTypes.map((type) => ( + + ))} +
+
+ + {/* Participants */} +
+ +
+ + {participants} + +
+
+ + {/* Confirm Button */} + +
+ )} + + {/* Confirmation Step */} + {bookingStep === "confirmation" && bookingData && ( +
+
+
+ +
+

Booking Confirmed!

+

Your guided aarti session has been scheduled

+
+ + {/* Booking Details */} +
+
+
+

Date & Time

+

+ {new Date(bookingData.date).toLocaleDateString("en-US", { weekday: "long", month: "long", day: "numeric" })} at {bookingData.time} +

+
+
+

Session Type

+

+ {sessionTypes.find(t => t.id === bookingData.sessionType)?.name} +

+
+
+

Participants

+

{bookingData.participants} {bookingData.participants === 1 ? "person" : "people"}

+
+
+

Price

+

+ {sessionTypes.find(t => t.id === bookingData.sessionType)?.price} +

+
+
+
+ + {/* Contact Information */} +
+

Confirmation Details

+
+
+ + Confirmation email sent to your registered email +
+
+ + You'll receive a reminder 24 hours before the session +
+
+
+ + {/* Action Buttons */} +
+ + + View More Services + +
+
+ )} +
+
+ + +
+ ); +} \ No newline at end of file -- 2.49.1 From c1bbe3f745c6aa441e6c8818fb73e7c13f044425 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:28 +0000 Subject: [PATCH 2/8] Add src/app/guided-aarti-sessions/page.tsx --- src/app/guided-aarti-sessions/page.tsx | 238 +++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 src/app/guided-aarti-sessions/page.tsx diff --git a/src/app/guided-aarti-sessions/page.tsx b/src/app/guided-aarti-sessions/page.tsx new file mode 100644 index 0000000..30fe46c --- /dev/null +++ b/src/app/guided-aarti-sessions/page.tsx @@ -0,0 +1,238 @@ +"use client"; + +import Link from "next/link"; +import { MessageCircle, Zap, Heart, Sparkles, Users, Calendar } from "lucide-react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import HeroBillboardRotatedCarousel from "@/components/sections/hero/HeroBillboardRotatedCarousel"; +import TextAbout from "@/components/sections/about/TextAbout"; +import FeatureCardTwentySeven from "@/components/sections/feature/FeatureCardTwentySeven"; +import TestimonialCardSixteen from "@/components/sections/testimonial/TestimonialCardSixteen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +export default function GuidedAartiSessionsPage() { + const navItems = [ + { name: "Home", id: "home" }, + { name: "Sessions", id: "sessions" }, + { name: "Features", id: "features" }, + { name: "Testimonials", id: "testimonials" }, + { name: "Schedule", id: "schedule" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Guided Sessions", href: "/guided-aarti-sessions" }, + { label: "Live Chat", href: "#" }, + { label: "Session Booking", href: "#" }, + { label: "Resources", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/" }, + { label: "Our Team", href: "#" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Mantra Guide", href: "#" }, + { label: "Ritual Instructions", href: "#" }, + { label: "Spiritual Blog", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + return ( + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ ); +} -- 2.49.1 From 3adc794cf09e9dadc7ce5abe8842cf8479880089 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:28 +0000 Subject: [PATCH 3/8] Add src/app/login/page.tsx --- src/app/login/page.tsx | 241 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 src/app/login/page.tsx diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 0000000..0594f18 --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,241 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +export default function LoginPage() { + const [formData, setFormData] = useState({ + email: "", password: ""}); + const [errors, setErrors] = useState>({}); + const [isSubmitting, setIsSubmitting] = useState(false); + const [successMessage, setSuccessMessage] = useState(""); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Features", id: "features" }, + { name: "AI Models", id: "models" }, + { name: "Pricing", id: "pricing" }, + { name: "About", id: "about" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "/#features" }, + { label: "Pricing", href: "/#pricing" }, + { label: "AI Models", href: "/#models" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/about" }, + { label: "Contact", href: "/#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + const validateForm = () => { + const newErrors: Record = {}; + + if (!formData.email.trim()) { + newErrors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { + newErrors.email = "Please enter a valid email"; + } + + if (!formData.password) { + newErrors.password = "Password is required"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + if (errors[name]) { + setErrors((prev) => ({ + ...prev, + [name]: ""})); + } + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setSuccessMessage(""); + + if (!validateForm()) { + return; + } + + setIsSubmitting(true); + + try { + const storedUser = localStorage.getItem(`user_${formData.email}`); + + if (!storedUser) { + setErrors({ form: "User not found. Please create an account." }); + setIsSubmitting(false); + return; + } + + const userData = JSON.parse(storedUser); + + if (userData.password !== formData.password) { + setErrors({ form: "Invalid email or password." }); + setIsSubmitting(false); + return; + } + + localStorage.setItem("currentUser", JSON.stringify(userData)); + localStorage.setItem("isAuthenticated", "true"); + + setSuccessMessage("Login successful! Redirecting..."); + setFormData({ email: "", password: "" }); + + setTimeout(() => { + window.location.href = "/profile"; + }, 1500); + } catch (error) { + setErrors({ form: "An error occurred. Please try again." }); + } finally { + setIsSubmitting(false); + } + }; + + return ( + + + +
+
+
+

Sign In

+

+ Welcome back to your spiritual journey +

+ + {successMessage && ( +
+ {successMessage} +
+ )} + + {errors.form && ( +
+ {errors.form} +
+ )} + +
+
+ + + {errors.email && ( +

{errors.email}

+ )} +
+ +
+ + + {errors.password && ( +

{errors.password}

+ )} +
+ + +
+ +

+ Don't have an account?{" "} + + Create One + +

+
+
+
+ + +
+ ); +} \ No newline at end of file -- 2.49.1 From 8998416bae465e6eb61588afad044056cc0ed62f Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:29 +0000 Subject: [PATCH 4/8] Update src/app/page.tsx --- src/app/page.tsx | 285 +++++++++++------------------------------------ 1 file changed, 65 insertions(+), 220 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index b9f3452..a035c0f 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,7 @@ "use client"; import Link from "next/link"; -import { Sparkles, Heart, Zap, Flame, Star, DollarSign, Crown } from "lucide-react"; +import { Sparkles, Heart, Zap, Flame, Star, DollarSign, Crown, Mic, Calendar, Users, Brain } from "lucide-react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; import HeroBillboardRotatedCarousel from "@/components/sections/hero/HeroBillboardRotatedCarousel"; @@ -24,8 +24,7 @@ export default function HomePage() { const footerColumns = [ { - title: "Product", - items: [ + title: "Product", items: [ { label: "Features", href: "#features" }, { label: "Pricing", href: "#pricing" }, { label: "AI Models", href: "#models" }, @@ -33,17 +32,15 @@ export default function HomePage() { ], }, { - title: "Company", - items: [ - { label: "About Us", href: "/about" }, + title: "Company", items: [ + { label: "About Us", href: "#about" }, { label: "Contact", href: "#contact" }, { label: "Careers", href: "#" }, { label: "Press", href: "#" }, ], }, { - title: "Resources", - items: [ + title: "Resources", items: [ { label: "Documentation", href: "#" }, { label: "Community", href: "#" }, { label: "Guides", href: "#" }, @@ -51,8 +48,7 @@ export default function HomePage() { ], }, { - title: "Legal", - items: [ + title: "Legal", items: [ { label: "Privacy Policy", href: "#" }, { label: "Terms of Service", href: "#" }, { label: "Cookie Policy", href: "#" }, @@ -92,49 +88,26 @@ export default function HomePage() { tagAnimation="slide-up" buttons={[ { - text: "Start Your Journey", - href: "#pricing", - }, + text: "Start Your Journey", href: "#pricing"}, { - text: "Learn More", - href: "#features", - }, + text: "Learn More", href: "#features"}, ]} buttonAnimation="blur-reveal" background={{ - variant: "radial-gradient", - }} + variant: "radial-gradient"}} carouselItems={[ { - id: "carousel-1", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-serene-hindu-aarti-ceremony-with-tradi-1774187435323-3aa97833.png?_wi=1", - imageAlt: "Hindu aarti ceremony with AI interface", - }, + id: "carousel-1", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-serene-hindu-aarti-ceremony-with-tradi-1774187435323-3aa97833.png?_wi=1", imageAlt: "Hindu aarti ceremony with AI interface"}, { - id: "carousel-2", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-close-up-of-a-devotee-performing-aarti-1774187437516-86b9cbcb.png", - imageAlt: "Spiritual guidance AI technology", - }, + id: "carousel-2", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-close-up-of-a-devotee-performing-aarti-1774187437516-86b9cbcb.png", imageAlt: "Spiritual guidance AI technology"}, { - id: "carousel-3", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/three-distinct-panels-showing-chatgpt-go-1774187436105-3fd2a65f.png?_wi=1", - imageAlt: "AI models for aarti assistance", - }, + id: "carousel-3", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/three-distinct-panels-showing-chatgpt-go-1774187436105-3fd2a65f.png?_wi=1", imageAlt: "AI models for aarti assistance"}, { - id: "carousel-4", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-modern-digital-interface-dashboard-for-1774187439845-09258fc1.png?_wi=1", - imageAlt: "Modern spiritual platform interface", - }, + id: "carousel-4", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-modern-digital-interface-dashboard-for-1774187439845-09258fc1.png?_wi=1", imageAlt: "Modern spiritual platform interface"}, { - id: "carousel-5", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-group-of-diverse-devotees-from-differe-1774187435267-c6ede5f9.png", - imageAlt: "Aarti ritual with AI guidance", - }, + id: "carousel-5", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-group-of-diverse-devotees-from-differe-1774187435267-c6ede5f9.png", imageAlt: "Aarti ritual with AI guidance"}, { - id: "carousel-6", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-meditating-figure-with-chakras-glowing-1774187436989-65c2a695.png", - imageAlt: "Divine AI spiritual connection", - }, + id: "carousel-6", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-meditating-figure-with-chakras-glowing-1774187436989-65c2a695.png", imageAlt: "Divine AI spiritual connection"}, ]} autoPlay={true} autoPlayInterval={5000} @@ -150,9 +123,7 @@ export default function HomePage() { title="Bridging Ancient Wisdom with Modern Technology" buttons={[ { - text: "Explore Features", - href: "#features", - }, + text: "Explore Features", href: "#features"}, ]} buttonAnimation="blur-reveal" useInvertedBackground={false} @@ -165,13 +136,11 @@ export default function HomePage() { title="Powered by Leading AI Models" description="Choose from our diverse range of AI models to receive personalized aarti guidance. Each model brings unique strengths to your spiritual journey." tag="Advanced AI Integration" - tagIcon={Zap} + tagIcon={Brain} tagAnimation="slide-up" buttons={[ { - text: "Try Now", - href: "#pricing", - }, + text: "Try Now", href: "#pricing"}, ]} buttonAnimation="blur-reveal" textboxLayout="default" @@ -180,26 +149,11 @@ export default function HomePage() { animationType="slide-up" products={[ { - id: "chatgpt", - name: "ChatGPT 4o", - price: "Included", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/chatgpt-logo-and-interface-elegantly-dis-1774187435422-9261c300.png", - imageAlt: "ChatGPT AI model", - }, + id: "chatgpt", name: "ChatGPT 4o", price: "Included", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/chatgpt-logo-and-interface-elegantly-dis-1774187435422-9261c300.png", imageAlt: "ChatGPT AI model"}, { - id: "gemini", - name: "Google Gemini Pro", - price: "Premium", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/google-gemini-logo-displayed-with-multic-1774187437545-086f7519.png", - imageAlt: "Google Gemini AI model", - }, + id: "gemini", name: "Google Gemini Pro", price: "Premium", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/google-gemini-logo-displayed-with-multic-1774187437545-086f7519.png", imageAlt: "Google Gemini AI model"}, { - id: "deepseek", - name: "DeepSeek R1", - price: "Premium", - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/deepseek-logo-with-deep-blue-and-elegant-1774187436268-3ec5b8fa.png", - imageAlt: "DeepSeek AI model", - }, + id: "deepseek", name: "DeepSeek R1", price: "Premium", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/deepseek-logo-with-deep-blue-and-elegant-1774187436268-3ec5b8fa.png", imageAlt: "DeepSeek AI model"}, ]} carouselMode="buttons" /> @@ -214,9 +168,7 @@ export default function HomePage() { tagAnimation="slide-up" buttons={[ { - text: "Get Started", - href: "#pricing", - }, + text: "Get Started", href: "#pricing"}, ]} buttonAnimation="blur-reveal" textboxLayout="default" @@ -225,45 +177,21 @@ export default function HomePage() { animationType="slide-up" features={[ { - id: "ritual-guide", - title: "Personalized Ritual Guidance", - descriptions: [ - "Receive step-by-step instructions for performing aarti ceremonies", - "AI adapts guidance based on your preferences and available resources", - ], - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-step-by-step-visual-guide-showing-the--1774187437353-624518cc.png", - imageAlt: "Step-by-step ritual guidance", - }, + id: "ritual-guide", title: "Personalized Ritual Guidance", descriptions: [ + "Receive step-by-step instructions for performing aarti ceremonies", "AI adapts guidance based on your preferences and available resources"], + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-step-by-step-visual-guide-showing-the--1774187437353-624518cc.png", imageAlt: "Step-by-step ritual guidance"}, { - id: "mantra-learning", - title: "Mantra Learning Module", - descriptions: [ - "Learn sacred mantras with proper pronunciation", - "Audio guidance and practice sessions from multiple AI models", - ], - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-beautiful-sanskrit-mantra-displayed-in-1774187435176-e8e77bb1.png", - imageAlt: "Mantra learning interface", - }, + id: "mantra-learning", title: "Mantra Learning Module", descriptions: [ + "Learn sacred mantras with proper pronunciation", "Audio guidance and practice sessions from multiple AI models"], + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-beautiful-sanskrit-mantra-displayed-in-1774187435176-e8e77bb1.png", imageAlt: "Mantra learning interface"}, { - id: "festival-calendar", - title: "Festival & Celebration Calendar", - descriptions: [ - "Stay updated with important Hindu festivals and auspicious dates", - "Personalized reminders and ritual suggestions", - ], - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-hindu-festival-calendar-interface-show-1774187437483-7140de4e.png", - imageAlt: "Festival calendar interface", - }, + id: "festival-calendar", title: "Festival & Celebration Calendar", descriptions: [ + "Stay updated with important Hindu festivals and auspicious dates", "Personalized reminders and ritual suggestions"], + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-hindu-festival-calendar-interface-show-1774187437483-7140de4e.png", imageAlt: "Festival calendar interface"}, { - id: "community-wisdom", - title: "Community Wisdom Sharing", - descriptions: [ - "Connect with other devotees and share spiritual experiences", - "Access a library of shared aarti practices and traditions", - ], - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-vibrant-community-forum-or-social-netw-1774187435390-4993488f.png?_wi=1", - imageAlt: "Community forum interface", - }, + id: "community-wisdom", title: "Community Wisdom Sharing", descriptions: [ + "Connect with other devotees and share spiritual experiences", "Access a library of shared aarti practices and traditions"], + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-vibrant-community-forum-or-social-netw-1774187435390-4993488f.png?_wi=1", imageAlt: "Community forum interface"}, ]} /> @@ -282,73 +210,31 @@ export default function HomePage() { animationType="slide-up" kpiItems={[ { - value: "50K+", - label: "Active Users", - }, + value: "50K+", label: "Active Users"}, { - value: "100K+", - label: "Aarti Sessions", - }, + value: "100K+", label: "Aarti Sessions"}, { - value: "4.9/5", - label: "Average Rating", - }, + value: "4.9/5", label: "Average Rating"}, ]} testimonials={[ { - id: "1", - name: "Priya Sharma", - role: "Devotee", - company: "Delhi", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-professional-portrait-of-a-young-india-1774187434189-d9642f13.png?_wi=1", - imageAlt: "Priya Sharma testimonial", - }, + id: "1", name: "Priya Sharma", role: "Devotee", company: "Delhi", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-professional-portrait-of-a-young-india-1774187434189-d9642f13.png?_wi=1", imageAlt: "Priya Sharma testimonial"}, { - id: "2", - name: "Rajesh Gupta", - role: "Spiritual Seeker", - company: "Mumbai", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-professional-portrait-of-an-indian-man-1774187434582-3111e1b6.png?_wi=1", - imageAlt: "Rajesh Gupta testimonial", - }, + id: "2", name: "Rajesh Gupta", role: "Spiritual Seeker", company: "Mumbai", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-professional-portrait-of-an-indian-man-1774187434582-3111e1b6.png?_wi=1", imageAlt: "Rajesh Gupta testimonial"}, { - id: "3", - name: "Ananya Patel", - role: "Temple Priest", - company: "Ahmedabad", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-woman-in-traditi-1774187434073-5bd9d9df.png?_wi=1", - imageAlt: "Ananya Patel testimonial", - }, + id: "3", name: "Ananya Patel", role: "Temple Priest", company: "Ahmedabad", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-woman-in-traditi-1774187434073-5bd9d9df.png?_wi=1", imageAlt: "Ananya Patel testimonial"}, { - id: "4", - name: "Vikram Singh", - role: "Spiritual Guide", - company: "Bangalore", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-man-with-traditi-1774187434319-765e8f5a.png?_wi=1", - imageAlt: "Vikram Singh testimonial", - }, + id: "4", name: "Vikram Singh", role: "Spiritual Guide", company: "Bangalore", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-man-with-traditi-1774187434319-765e8f5a.png?_wi=1", imageAlt: "Vikram Singh testimonial"}, { - id: "5", - name: "Meera Iyer", - role: "Aarti Enthusiast", - company: "Chennai", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-woman-with-a-war-1774187434965-1d87e6f4.png?_wi=1", - imageAlt: "Meera Iyer testimonial", - }, + id: "5", name: "Meera Iyer", role: "Aarti Enthusiast", company: "Chennai", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-indian-woman-with-a-war-1774187434965-1d87e6f4.png?_wi=1", imageAlt: "Meera Iyer testimonial"}, { - id: "6", - name: "Arjun Desai", - role: "Cultural Preservationist", - company: "Pune", - rating: 5, - imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-older-indian-man-with-d-1774187435111-483549b6.png?_wi=1", - imageAlt: "Arjun Desai testimonial", - }, + id: "6", name: "Arjun Desai", role: "Cultural Preservationist", company: "Pune", rating: 5, + imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3BIqAjbdPaSZ14HbtJdzZ7Arky1/a-portrait-of-an-older-indian-man-with-d-1774187435111-483549b6.png?_wi=1", imageAlt: "Arjun Desai testimonial"}, ]} /> @@ -367,66 +253,25 @@ export default function HomePage() { animationType="slide-up" plans={[ { - id: "free", - tag: "Start", - tagIcon: Sparkles, - price: "Free", - period: "Forever", - description: "Perfect for beginners exploring spiritual guidance", - button: { - text: "Get Started", - href: "#", - }, - featuresTitle: "Included Features", - features: [ - "Basic aarti guidance", - "ChatGPT integration", - "Festival calendar", - "Community access", - "5 rituals per month", - ], + id: "free", tag: "Start", tagIcon: Sparkles, + price: "Free", period: "Forever", description: "Perfect for beginners exploring spiritual guidance", button: { + text: "Get Started", href: "#"}, + featuresTitle: "Included Features", features: [ + "Basic aarti guidance", "ChatGPT integration", "Festival calendar", "Community access", "5 rituals per month"], }, { - id: "pro", - tag: "Popular", - tagIcon: Crown, - price: "$9.99", - period: "Month", - description: "Enhanced spiritual experience with all AI models", - button: { - text: "Subscribe Now", - href: "#", - }, - featuresTitle: "Pro Features", - features: [ - "All AI models access", - "Unlimited aarti guidance", - "Advanced mantra learning", - "Priority support", - "Personalized recommendations", - "No ad interruptions", - ], + id: "pro", tag: "Popular", tagIcon: Crown, + price: "$9.99", period: "Month", description: "Enhanced spiritual experience with all AI models", button: { + text: "Subscribe Now", href: "#"}, + featuresTitle: "Pro Features", features: [ + "All AI models access", "Unlimited aarti guidance", "Advanced mantra learning", "Priority support", "Personalized recommendations", "No ad interruptions"], }, { - id: "premium", - tag: "Ultimate", - tagIcon: Flame, - price: "$19.99", - period: "Month", - description: "Complete spiritual transformation with exclusive content", - button: { - text: "Upgrade Today", - href: "#", - }, - featuresTitle: "Premium Benefits", - features: [ - "All Pro features included", - "1-on-1 spiritual coaching", - "Exclusive rituals library", - "Custom AI model fine-tuning", - "Advanced analytics dashboard", - "Lifetime updates & new features", - ], + id: "premium", tag: "Ultimate", tagIcon: Flame, + price: "$19.99", period: "Month", description: "Complete spiritual transformation with exclusive content", button: { + text: "Upgrade Today", href: "#"}, + featuresTitle: "Premium Benefits", features: [ + "All Pro features included", "1-on-1 spiritual coaching", "Exclusive rituals library", "Custom AI model fine-tuning", "Advanced analytics dashboard", "Lifetime updates & new features"], }, ]} /> @@ -442,4 +287,4 @@ export default function HomePage() { ); -} \ No newline at end of file +} -- 2.49.1 From 13cae3b705693feef3658df9f2089f3455adf29e Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:29 +0000 Subject: [PATCH 5/8] Add src/app/profile/page.tsx --- src/app/profile/page.tsx | 409 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 src/app/profile/page.tsx diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx new file mode 100644 index 0000000..47e065e --- /dev/null +++ b/src/app/profile/page.tsx @@ -0,0 +1,409 @@ +"use client"; + +import { useState, useEffect } from "react"; +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +interface UserData { + name: string; + email: string; + createdAt: string; + preferences?: { + theme?: string; + notifications?: boolean; + language?: string; + modelPreference?: string; + ritualsPerMonth?: number; + }; +} + +export default function ProfilePage() { + const [user, setUser] = useState(null); + const [isEditing, setIsEditing] = useState(false); + const [editData, setEditData] = useState>({}); + const [successMessage, setSuccessMessage] = useState(""); + const [isLoading, setIsLoading] = useState(true); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Features", id: "features" }, + { name: "AI Models", id: "models" }, + { name: "Pricing", id: "pricing" }, + { name: "About", id: "about" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "/#features" }, + { label: "Pricing", href: "/#pricing" }, + { label: "AI Models", href: "/#models" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/about" }, + { label: "Contact", href: "/#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + useEffect(() => { + const checkAuth = () => { + const isAuthenticated = localStorage.getItem("isAuthenticated"); + const currentUser = localStorage.getItem("currentUser"); + + if (!isAuthenticated || !currentUser) { + window.location.href = "/login"; + return; + } + + try { + const userData = JSON.parse(currentUser); + setUser(userData); + setEditData(userData); + } catch (error) { + console.error("Error parsing user data", error); + window.location.href = "/login"; + } finally { + setIsLoading(false); + } + }; + + checkAuth(); + }, []); + + const handleLogout = () => { + localStorage.removeItem("isAuthenticated"); + localStorage.removeItem("currentUser"); + window.location.href = "/login"; + }; + + const handleEditChange = (field: string, value: string | boolean | number) => { + if (field.startsWith("preferences.")) { + const prefField = field.replace("preferences.", ""); + setEditData((prev) => ({ + ...prev, + preferences: { + ...prev.preferences, + [prefField]: value, + }, + })); + } else { + setEditData((prev) => ({ + ...prev, + [field]: value, + })); + } + }; + + const handleSavePreferences = () => { + if (user?.email) { + const updatedUser = { ...editData } as UserData; + localStorage.setItem(`user_${user.email}`, JSON.stringify(updatedUser)); + localStorage.setItem("currentUser", JSON.stringify(updatedUser)); + setUser(updatedUser); + setIsEditing(false); + setSuccessMessage("Preferences saved successfully!"); + setTimeout(() => setSuccessMessage(""), 3000); + } + }; + + if (isLoading) { + return ( + +
+

Loading...

+
+
+ ); + } + + if (!user) { + return null; + } + + return ( + + + +
+
+
+
+

User Profile

+ +
+ + {successMessage && ( +
+ {successMessage} +
+ )} + +
+ {/* Account Information */} +
+

Account Information

+
+
+

Full Name

+

{user.name}

+
+
+

Email

+

{user.email}

+
+
+

Member Since

+

+ {new Date(user.createdAt).toLocaleDateString()} +

+
+
+
+ + {/* Preferences Section */} +
+
+

Preferences

+ {!isEditing && ( + + )} +
+ + {!isEditing ? ( +
+
+

Theme

+

+ {user.preferences?.theme || "Light"} +

+
+
+

Notifications

+

+ {user.preferences?.notifications ? "Enabled" : "Disabled"} +

+
+
+

Language

+

+ {user.preferences?.language || "English"} +

+
+
+

Preferred AI Model

+

+ {user.preferences?.modelPreference || "ChatGPT"} +

+
+
+ ) : ( +
+
+ + +
+ +
+ + + handleEditChange("preferences.notifications", e.target.checked) + } + className="h-4 w-4 text-primary-cta rounded focus:ring-2 focus:ring-primary-cta" + /> + Enable notifications +
+ +
+ + +
+ +
+ + +
+ +
+ + + handleEditChange( + "preferences.ritualsPerMonth", parseInt(e.target.value) + ) + } + className="w-full px-4 py-2 border border-background-accent rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-cta" + /> +
+ +
+ + +
+
+ )} +
+
+ + {/* Quick Actions */} +
+

Quick Actions

+
+ +

View Plans

+

Upgrade your subscription

+ + +

Explore Features

+

Learn about our tools

+ + +
+
+
+
+
+ + +
+ ); +} \ No newline at end of file -- 2.49.1 From 8e48b10eda2f18512bdb27243ffac4c5112a3495 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:30 +0000 Subject: [PATCH 6/8] Add src/app/quiz/page.tsx --- src/app/quiz/page.tsx | 426 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 src/app/quiz/page.tsx diff --git a/src/app/quiz/page.tsx b/src/app/quiz/page.tsx new file mode 100644 index 0000000..82c331e --- /dev/null +++ b/src/app/quiz/page.tsx @@ -0,0 +1,426 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { Sparkles, Heart, Zap, Flame, Star, DollarSign, Crown, Brain, Compass, Lightbulb } from "lucide-react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import HeroBillboardRotatedCarousel from "@/components/sections/hero/HeroBillboardRotatedCarousel"; +import FeatureCardTwentySeven from "@/components/sections/feature/FeatureCardTwentySeven"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +type QuizQuestion = { + id: string; + question: string; + options: QuizOption[]; +}; + +type QuizOption = { + id: string; + text: string; + modelScores: { + chatgpt: number; + gemini: number; + deepseek: number; + }; +}; + +type ModelRecommendation = { + name: string; + score: number; + reason: string; + icon: typeof Sparkles; +}; + +const quizQuestions: QuizQuestion[] = [ + { + id: "q1", question: "What is your primary spiritual goal?", options: [ + { + id: "q1-1", text: "Personal spiritual growth and self-discovery", modelScores: { chatgpt: 8, gemini: 7, deepseek: 6 }, + }, + { + id: "q1-2", text: "Understanding philosophical concepts deeply", modelScores: { chatgpt: 6, gemini: 9, deepseek: 8 }, + }, + { + id: "q1-3", text: "Logical analysis of spiritual teachings", modelScores: { chatgpt: 7, gemini: 7, deepseek: 9 }, + }, + { + id: "q1-4", text: "Practical ritual and ceremony guidance", modelScores: { chatgpt: 9, gemini: 8, deepseek: 7 }, + }, + ], + }, + { + id: "q2", question: "How do you prefer to receive spiritual guidance?", options: [ + { + id: "q2-1", text: "Conversational and empathetic explanations", modelScores: { chatgpt: 9, gemini: 7, deepseek: 6 }, + }, + { + id: "q2-2", text: "Comprehensive and scholarly approach", modelScores: { chatgpt: 6, gemini: 9, deepseek: 8 }, + }, + { + id: "q2-3", text: "Technical and precise information", modelScores: { chatgpt: 7, gemini: 8, deepseek: 9 }, + }, + { + id: "q2-4", text: "Step-by-step practical instructions", modelScores: { chatgpt: 9, gemini: 7, deepseek: 7 }, + }, + ], + }, + { + id: "q3", question: "What is your experience level with Hindu spirituality?", options: [ + { + id: "q3-1", text: "Beginner - just starting my journey", modelScores: { chatgpt: 9, gemini: 7, deepseek: 6 }, + }, + { + id: "q3-2", text: "Intermediate - familiar with basics", modelScores: { chatgpt: 8, gemini: 8, deepseek: 7 }, + }, + { + id: "q3-3", text: "Advanced - seeking deeper knowledge", modelScores: { chatgpt: 7, gemini: 9, deepseek: 8 }, + }, + { + id: "q3-4", text: "Expert - interested in rare texts", modelScores: { chatgpt: 6, gemini: 9, deepseek: 9 }, + }, + ], + }, + { + id: "q4", question: "How much time can you dedicate to spiritual practice?", options: [ + { + id: "q4-1", text: "Less than 15 minutes daily", modelScores: { chatgpt: 9, gemini: 7, deepseek: 7 }, + }, + { + id: "q4-2", text: "15-30 minutes daily", modelScores: { chatgpt: 8, gemini: 8, deepseek: 8 }, + }, + { + id: "q4-3", text: "30-60 minutes daily", modelScores: { chatgpt: 8, gemini: 9, deepseek: 8 }, + }, + { + id: "q4-4", text: "More than 1 hour daily", modelScores: { chatgpt: 7, gemini: 9, deepseek: 9 }, + }, + ], + }, + { + id: "q5", question: "What aspects of spirituality interest you most?", options: [ + { + id: "q5-1", text: "Mantras and chanting practices", modelScores: { chatgpt: 8, gemini: 8, deepseek: 7 }, + }, + { + id: "q5-2", text: "Yoga and meditation", modelScores: { chatgpt: 8, gemini: 9, deepseek: 7 }, + }, + { + id: "q5-3", text: "Philosophy and sacred texts", modelScores: { chatgpt: 7, gemini: 9, deepseek: 9 }, + }, + { + id: "q5-4", text: "Rituals and ceremonies", modelScores: { chatgpt: 9, gemini: 7, deepseek: 7 }, + }, + ], + }, +]; + +const modelDetails = { + chatgpt: { + name: "ChatGPT 4o", reason: "Best for personalized, conversational guidance and practical ritual support", description: "Perfect for beginners and those seeking empathetic, step-by-step spiritual guidance", color: "from-green-500 to-green-600"}, + gemini: { + name: "Google Gemini Pro", reason: "Ideal for comprehensive knowledge and philosophical understanding", description: "Great for those seeking scholarly, in-depth exploration of spiritual concepts", color: "from-blue-500 to-blue-600"}, + deepseek: { + name: "DeepSeek R1", reason: "Excellent for logical analysis and advanced spiritual reasoning", description: "Perfect for those seeking precise, analytical spiritual guidance", color: "from-purple-500 to-purple-600"}, +}; + +export default function QuizPage() { + const [currentQuestion, setCurrentQuestion] = useState(0); + const [scores, setScores] = useState({ chatgpt: 0, gemini: 0, deepseek: 0 }); + const [showResults, setShowResults] = useState(false); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Features", id: "features" }, + { name: "AI Models", id: "models" }, + { name: "Pricing", id: "pricing" }, + { name: "Quiz", id: "quiz" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "/#features" }, + { label: "Pricing", href: "/#pricing" }, + { label: "AI Models", href: "/#models" }, + { label: "Quiz", href: "/quiz" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/about" }, + { label: "Contact", href: "/#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + const handleOptionClick = (option: QuizOption) => { + setScores({ + chatgpt: scores.chatgpt + option.modelScores.chatgpt, + gemini: scores.gemini + option.modelScores.gemini, + deepseek: scores.deepseek + option.modelScores.deepseek, + }); + + if (currentQuestion < quizQuestions.length - 1) { + setCurrentQuestion(currentQuestion + 1); + } else { + setShowResults(true); + } + }; + + const getRecommendations = (): ModelRecommendation[] => { + const recommendations = [ + { + name: "chatgpt", score: scores.chatgpt, + reason: modelDetails.chatgpt.reason, + icon: Sparkles, + }, + { + name: "gemini", score: scores.gemini, + reason: modelDetails.gemini.reason, + icon: Brain, + }, + { + name: "deepseek", score: scores.deepseek, + reason: modelDetails.deepseek.reason, + icon: Lightbulb, + }, + ]; + + return recommendations.sort((a, b) => b.score - a.score); + }; + + const resetQuiz = () => { + setCurrentQuestion(0); + setScores({ chatgpt: 0, gemini: 0, deepseek: 0 }); + setShowResults(false); + }; + + const recommendations = getRecommendations(); + + return ( + + + +
+ +
+ +
+
+ {!showResults ? ( +
+
+
+ + Question {currentQuestion + 1} of {quizQuestions.length} + +
+

{quizQuestions[currentQuestion].question}

+
+ +
+
+
+ +
+ {quizQuestions[currentQuestion].options.map((option) => ( + + ))} +
+
+ ) : ( +
+
+

Your AI Model Recommendation

+

+ Based on your preferences, here are the best AI models for your spiritual journey +

+
+ +
+ {recommendations.map((rec, idx) => { + const model = modelDetails[rec.name as keyof typeof modelDetails]; + return ( +
+ {idx === 0 && ( +
+ 🏆 Best Match +
+ )} +
+
+

{model.name}

+

+ {model.reason} +

+

{model.description}

+
+
+
+ {Math.round((rec.score / (quizQuestions.length * 10)) * 100)}% +
+

Match Score

+
+
+
+ ); + })} +
+ +
+

+ Pro Tip: You can try all models and switch between them based on your + current spiritual need. Each brings unique strengths to your practice. +

+
+ +
+ + + Get Started + +
+
+ )} +
+
+ +
+ +
+ + + + ); +} -- 2.49.1 From 1caea88b0b9a7dcae30fd85a97b42e2c076fd7bc Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:30 +0000 Subject: [PATCH 7/8] Add src/app/register/page.tsx --- src/app/register/page.tsx | 281 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 src/app/register/page.tsx diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx new file mode 100644 index 0000000..11535c1 --- /dev/null +++ b/src/app/register/page.tsx @@ -0,0 +1,281 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +export default function RegisterPage() { + const [formData, setFormData] = useState({ + name: "", email: "", password: "", confirmPassword: ""}); + const [errors, setErrors] = useState>({}); + const [isSubmitting, setIsSubmitting] = useState(false); + const [successMessage, setSuccessMessage] = useState(""); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Features", id: "features" }, + { name: "AI Models", id: "models" }, + { name: "Pricing", id: "pricing" }, + { name: "About", id: "about" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "/#features" }, + { label: "Pricing", href: "/#pricing" }, + { label: "AI Models", href: "/#models" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/about" }, + { label: "Contact", href: "/#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + const validateForm = () => { + const newErrors: Record = {}; + + if (!formData.name.trim()) { + newErrors.name = "Name is required"; + } + + if (!formData.email.trim()) { + newErrors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { + newErrors.email = "Please enter a valid email"; + } + + if (!formData.password) { + newErrors.password = "Password is required"; + } else if (formData.password.length < 8) { + newErrors.password = "Password must be at least 8 characters"; + } + + if (formData.password !== formData.confirmPassword) { + newErrors.confirmPassword = "Passwords do not match"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + if (errors[name]) { + setErrors((prev) => ({ + ...prev, + [name]: ""})); + } + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setSuccessMessage(""); + + if (!validateForm()) { + return; + } + + setIsSubmitting(true); + + try { + const userData = { + name: formData.name, + email: formData.email, + password: formData.password, + createdAt: new Date().toISOString(), + preferences: { + theme: "light", notifications: true, + language: "en"}, + }; + + localStorage.setItem(`user_${formData.email}`, JSON.stringify(userData)); + localStorage.setItem("currentUser", JSON.stringify(userData)); + + setSuccessMessage("Account created successfully! Redirecting to login..."); + setFormData({ name: "", email: "", password: "", confirmPassword: "" }); + + setTimeout(() => { + window.location.href = "/login"; + }, 2000); + } catch (error) { + setErrors({ form: "An error occurred. Please try again." }); + } finally { + setIsSubmitting(false); + } + }; + + return ( + + + +
+
+
+

Create Account

+

+ Join Aarti AI and start your spiritual journey +

+ + {successMessage && ( +
+ {successMessage} +
+ )} + + {errors.form && ( +
+ {errors.form} +
+ )} + +
+
+ + + {errors.name && ( +

{errors.name}

+ )} +
+ +
+ + + {errors.email && ( +

{errors.email}

+ )} +
+ +
+ + + {errors.password && ( +

{errors.password}

+ )} +
+ +
+ + + {errors.confirmPassword && ( +

{errors.confirmPassword}

+ )} +
+ + +
+ +

+ Already have an account?{" "} + + Sign In + +

+
+
+
+ + +
+ ); +} \ No newline at end of file -- 2.49.1 From 2c415e318159dddbde548a9a4511b3ef2910a3b7 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 22 Mar 2026 13:54:30 +0000 Subject: [PATCH 8/8] Add src/app/rituals/page.tsx --- src/app/rituals/page.tsx | 504 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 504 insertions(+) create mode 100644 src/app/rituals/page.tsx diff --git a/src/app/rituals/page.tsx b/src/app/rituals/page.tsx new file mode 100644 index 0000000..0e1f159 --- /dev/null +++ b/src/app/rituals/page.tsx @@ -0,0 +1,504 @@ +"use client"; + +import { useState, useMemo } from "react"; +import Link from "next/link"; +import { Search, Filter, X, Clock, Tag as TagIcon } from "lucide-react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +interface Ritual { + id: string; + name: string; + type: string; + occasion: string; + duration: number; + description: string; + steps: string[]; + materials: string[]; + bestTime: string; + difficulty: "Beginner" | "Intermediate" | "Advanced"; +} + +const ritualsDatabase: Ritual[] = [ + { + id: "1", name: "Lakshmi Puja", type: "Prosperity", occasion: "Diwali, Monthly", duration: 45, + description: "A sacred ritual to invoke the blessings of Goddess Lakshmi for wealth and prosperity.", steps: [ + "Clean and prepare the worship area", "Light the lamp (diya) with ghee or oil", "Offer flowers and incense", "Chant Lakshmi mantras", "Distribute blessed offerings (prasad)"], + materials: [ + "Oil lamp (diya)", "Incense sticks", "Flowers", "Sweets or fruits", "Milk or honey"], + bestTime: "Evening, especially on new moon", difficulty: "Beginner"}, + { + id: "2", name: "Ganesha Puja", type: "Spiritual", occasion: "New Beginnings, Daily", duration: 30, + description: "An auspicious ritual to remove obstacles and seek blessings from Lord Ganesha.", steps: [ + "Create a clean sacred space", "Place Ganesha idol or image", "Offer flowers and modak (sweet)", "Ring the bell and chant mantras", "Meditate and seek blessings"], + materials: [ + "Ganesha idol", "Modak or laddu", "Flowers", "Bell", "Incense"], + bestTime: "Morning or before starting any new work", difficulty: "Beginner"}, + { + id: "3", name: "Navaratri Puja", type: "Festival", occasion: "Navaratri Festival", duration: 60, + description: "The nine-day festival celebrating the divine feminine energy with daily rituals.", steps: [ + "Setup ghatasthapna (pot planting)", "Daily worship of different goddesses", "Perform aarti each day", "Prepare special offerings", "Observe fasting as per tradition"], + materials: [ + "Clay pot", "Barley seeds", "Goddess idols", "Coconut", "Banana leaves"], + bestTime: "Morning and evening for 9 days", difficulty: "Intermediate"}, + { + id: "4", name: "Durga Puja", type: "Spiritual", occasion: "Navaratri, Dussehra", duration: 90, + description: "A comprehensive ritual to invoke the divine mother Durga for protection and strength.", steps: [ + "Prepare the altar with great devotion", "Perform kalash puja (pot worship)", "Recite Durga Saptashati (sacred text)", "Offer 108 flowers", "Conclude with aarti and blessing distribution"], + materials: [ + "Durga idol or image", "Sacred water", "Flowers (108)", "Oil lamp", "Sacred thread"], + bestTime: "During Navaratri festival", difficulty: "Advanced"}, + { + id: "5", name: "Daily Aarti", type: "Daily Worship", occasion: "Daily", duration: 15, + description: "A simple daily ritual of waving light before the deity to show reverence and love.", steps: [ + "Light the oil lamp", "Hold it with devotion", "Wave in circular motions", "Ring bell gently", "Sing or chant bhajans"], + materials: [ + "Oil lamp (diya)", "Oil or ghee", "Bell", "Flowers"], + bestTime: "Morning and evening", difficulty: "Beginner"}, + { + id: "6", name: "Maha Shivaratri Puja", type: "Spiritual", occasion: "Maha Shivaratri", duration: 120, + description: "An elaborate night-long ritual dedicated to Lord Shiva, involving fasting and meditation.", steps: [ + "Begin with ritual bath", "Meditate on Lord Shiva", "Perform abhisheka (bathing the Shiva linga)", "Offer bilva leaves", "Stay awake and chant throughout the night"], + materials: [ + "Shiva linga", "Milk, honey, ghee", "Bilva leaves", "Sacred ash (vibhuti)", "Rudraksha beads"], + bestTime: "Night of Maha Shivaratri", difficulty: "Advanced"}, + { + id: "7", name: "Krishna Janmashtami Puja", type: "Festival", occasion: "Krishna Janmashtami", duration: 75, + description: "A joyful celebration of Lord Krishna's birth with special rituals and offerings.", steps: [ + "Fast until midnight", "Prepare Krishna idol", "Perform abhisheka ritual", "Offer butter and milk", "Sing devotional songs and celebrate"], + materials: [ + "Krishna idol", "Butter and milk", "Flowers", "Flute (symbolic)", "Sweets and fruits"], + bestTime: "Midnight on Janmashtami", difficulty: "Intermediate"}, + { + id: "8", name: "Satyanarayan Katha Puja", type: "Spiritual", occasion: "Special Occasions, Monthly", duration: 90, + description: "A ritual involving the recitation of sacred stories and prayers for family well-being.", steps: [ + "Invite family and friends", "Setup the altar", "Begin with invocation", "Recite the sacred narrative", "Perform aarti and distribute prasad"], + materials: [ + "Satyanarayan idol", "Sacred text (Katha)", "Oil lamp", "Flowers and incense", "Kheer (rice pudding)"], + bestTime: "Evening, preferably on full moon", difficulty: "Intermediate"}, + { + id: "9", name: "Saraswati Puja", type: "Knowledge & Arts", occasion: "Basant Panchami, Start of Academic Year", duration: 45, + description: "A ritual to seek blessings of Goddess Saraswati for knowledge, wisdom, and creativity.", steps: [ + "Clean the study area", "Place Saraswati idol", "Offer flowers and incense", "Chant knowledge-related mantras", "Bless books and instruments"], + materials: [ + "Saraswati idol", "Books", "Musical instruments (symbolic)", "Yellow flowers", "Incense"], + bestTime: "Morning, especially on Basant Panchami", difficulty: "Beginner"}, + { + id: "10", name: "Hanuman Puja", type: "Spiritual", occasion: "Tuesday, Hanuman Jayanti", duration: 30, + description: "A powerful ritual to seek strength, courage, and devotion from Lord Hanuman.", steps: [ + "Face northeast direction", "Offer flowers to Hanuman idol", "Chant Hanuman Chalisa", "Apply sacred ash", "Meditate on strength and devotion"], + materials: [ + "Hanuman idol", "Vermilion (sindoor)", "Oil lamp", "Banana offering", "Rudraksha beads"], + bestTime: "Tuesday morning or evening", difficulty: "Beginner"}, +]; + +type RitualType = string; +type RitualOccasion = string; +type DurationRange = "all" | "short" | "medium" | "long"; + +export default function RitualsLibraryPage() { + const [searchQuery, setSearchQuery] = useState(""); + const [selectedType, setSelectedType] = useState(null); + const [selectedOccasion, setSelectedOccasion] = useState(null); + const [durationRange, setDurationRange] = useState("all"); + const [selectedRitual, setSelectedRitual] = useState(null); + + const navItems = [ + { name: "Home", id: "home" }, + { name: "Rituals", id: "rituals" }, + { name: "Features", id: "features" }, + { name: "Pricing", id: "pricing" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Features", href: "#features" }, + { label: "Pricing", href: "#pricing" }, + { label: "Rituals Library", href: "/rituals" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Us", href: "/about" }, + { label: "Contact", href: "#contact" }, + { label: "Careers", href: "#" }, + { label: "Press", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Documentation", href: "#" }, + { label: "Community", href: "#" }, + { label: "Guides", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "Cookie Policy", href: "#" }, + { label: "Disclaimer", href: "#" }, + ], + }, + ]; + + // Get unique types, occasions + const ritualTypes = Array.from(new Set(ritualsDatabase.map((r) => r.type))); + const ritualOccasions = Array.from(new Set(ritualsDatabase.flatMap((r) => r.occasion.split(", ")))); + + // Filter rituals + const filteredRituals = useMemo(() => { + return ritualsDatabase.filter((ritual) => { + const matchesSearch = + ritual.name.toLowerCase().includes(searchQuery.toLowerCase()) || + ritual.description.toLowerCase().includes(searchQuery.toLowerCase()); + + const matchesType = !selectedType || ritual.type === selectedType; + + const matchesOccasion = + !selectedOccasion || ritual.occasion.includes(selectedOccasion); + + const matchesDuration = + durationRange === "all" || + (durationRange === "short" && ritual.duration <= 30) || + (durationRange === "medium" && ritual.duration > 30 && ritual.duration <= 60) || + (durationRange === "long" && ritual.duration > 60); + + return matchesSearch && matchesType && matchesOccasion && matchesDuration; + }); + }, [searchQuery, selectedType, selectedOccasion, durationRange]); + + const clearFilters = () => { + setSearchQuery(""); + setSelectedType(null); + setSelectedOccasion(null); + setDurationRange("all"); + }; + + const hasActiveFilters = + searchQuery || selectedType || selectedOccasion || durationRange !== "all"; + + return ( + + + +
+
+ {/* Header */} +
+

Rituals Library

+

+ Explore our comprehensive database of sacred rituals. Search, filter, and discover the perfect aarti for any occasion. +

+
+ + {/* Search Bar */} +
+
+ + setSearchQuery(e.target.value)} + className="w-full pl-10 pr-4 py-3 rounded-lg border border-foreground/20 bg-card text-foreground placeholder-foreground/50 focus:outline-none focus:border-primary-cta" + /> +
+
+ + {/* Filters */} +
+
+

+ Filters +

+ {hasActiveFilters && ( + + )} +
+ +
+ {/* Type Filter */} +
+ +
+ + {ritualTypes.map((type) => ( + + ))} +
+
+ + {/* Occasion Filter */} +
+ +
+ + {ritualOccasions.map((occasion) => ( + + ))} +
+
+ + {/* Duration Filter */} +
+ +
+ {[ + { value: "all", label: "All Durations" }, + { value: "short", label: "Quick (≤30 min)" }, + { value: "medium", label: "Moderate (30-60 min)" }, + { value: "long", label: "Extended (>60 min)" }, + ].map((duration) => ( + + ))} +
+
+
+
+ + {/* Results Count */} +
+ Found {filteredRituals.length} ritual{filteredRituals.length !== 1 ? "s" : ""} +
+ + {/* Rituals Grid and Detail View */} + {selectedRitual ? ( + // Detail View +
+ +
+
+
+
+

+ {selectedRitual.name} +

+
+ + {selectedRitual.type} + + + {selectedRitual.duration} min + + + {selectedRitual.difficulty} + +
+
+
+

{selectedRitual.description}

+
+ +
+ {/* Steps */} +
+

Steps

+
    + {selectedRitual.steps.map((step, index) => ( +
  1. + + {index + 1} + + {step} +
  2. + ))} +
+
+ + {/* Materials and Info */} +
+
+

Materials Needed

+
    + {selectedRitual.materials.map((material, index) => ( +
  • + + {material} +
  • + ))} +
+
+
+

Best Time

+

{selectedRitual.bestTime}

+
+
+
+
+
+ ) : filteredRituals.length > 0 ? ( + // Grid View +
+ {filteredRituals.map((ritual) => ( +
setSelectedRitual(ritual)} + className="bg-card rounded-lg p-6 border border-foreground/10 hover:border-primary-cta/50 cursor-pointer transition hover:shadow-lg" + > +
+
+

+ {ritual.name} +

+ + {ritual.difficulty} + +
+

{ritual.description}

+
+ +
+
+ + {ritual.type} +
+
+ + {ritual.duration} minutes +
+
+ +
+

Occasions:

+
+ {ritual.occasion.split(", ").slice(0, 2).map((occ, idx) => ( + + {occ} + + ))} + {ritual.occasion.split(", ").length > 2 && ( + + +{ritual.occasion.split(", ").length - 2} more + + )} +
+
+ + +
+ ))} +
+ ) : ( + // Empty State +
+ +

+ No rituals found +

+

+ Try adjusting your search or filter criteria +

+ +
+ )} +
+
+ + +
+ ); +} \ No newline at end of file -- 2.49.1