Simplify website design by removing unnecessary decorative elements

Removes SectionDivider, IslamicPattern, and StarDivider components and simplifies section styling in classes, community, cta, and newsletter sections.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: acaf01d7-65a7-4fc5-901d-853488e196e8
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/af8dabca-e746-4e53-9c29-d8d4d9cf30f5/d0851f8a-ea37-4d01-9787-26b9ceec5b34.jpg
This commit is contained in:
JeffEmmett 2025-05-09 23:50:17 +00:00
parent 64126b5e50
commit d8620a0a13
4 changed files with 216 additions and 354 deletions

View File

@ -4,8 +4,6 @@ import { BookingCalendar } from "./booking-calendar";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import { Class } from "@shared/schema"; import { Class } from "@shared/schema";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "@/components/ui/skeleton";
import { SectionDivider, SectionDividerBottom, StarDivider } from "@/components/ui/section-divider";
import { IslamicPattern } from "@/components/ui/section-divider";
export function ClassesSection() { export function ClassesSection() {
const [selectedClassId, setSelectedClassId] = useState<number | null>(null); const [selectedClassId, setSelectedClassId] = useState<number | null>(null);
@ -39,102 +37,56 @@ export function ClassesSection() {
} }
return ( return (
<section className="relative overflow-hidden"> <section className="py-20 bg-rose-light">
<SectionDivider color="rose" />
<div className="relative py-20 rose-light-bg">
<IslamicPattern color="rose" opacity={10} />
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-16"> <div className="text-center mb-16">
<h2 className="text-3xl md:text-4xl font-playfair font-bold text-gray-800 relative inline-block"> <h2 className="text-3xl md:text-4xl font-playfair font-semibold text-gray-800 mb-4">
<span className="relative z-10">Class Offerings</span> Class Offerings
<div className="absolute -bottom-3 left-0 w-full h-1 bg-rose opacity-30"></div>
</h2> </h2>
<StarDivider color="rose" className="mt-4" /> <p className="max-w-3xl mx-auto text-gray-600">
<div className="mt-6 max-w-3xl mx-auto space-y-6"> Choose from our variety of class options designed to match your individual needs
<div className="flex flex-col md:flex-row gap-4 items-center bg-white bg-opacity-50 p-6 rounded-lg shadow-sm"> </p>
<div className="md:w-1/4 text-center mb-4 md:mb-0">
<div className="inline-flex items-center justify-center w-20 h-20 rounded-full bg-rose bg-opacity-20">
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10 text-rose" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
</div> </div>
<div className="grid grid-cols-1 md:grid-cols-5 gap-6 mb-16">
<div className="text-center p-6 bg-white">
<h3 className="font-playfair text-lg font-semibold text-rose mb-3">Mat Pilates</h3>
<p className="text-sm text-gray-600">Foundational strength, posture, and mobility</p>
</div> </div>
<div className="md:w-3/4">
<h3 className="font-playfair text-xl font-semibold text-gray-800">Mat Pilates</h3> <div className="text-center p-6 bg-white">
<p className="text-gray-600">Foundational strength, posture, and mobility</p> <h3 className="font-playfair text-lg font-semibold text-rose mb-3">Reformer & Equipment</h3>
<p className="text-sm text-gray-600">Deeper resistance, alignment, and control</p>
</div>
<div className="text-center p-6 bg-white">
<h3 className="font-playfair text-lg font-semibold text-rose mb-3">Beginner Foundations</h3>
<p className="text-sm text-gray-600">For those new to movement or Pilates</p>
</div>
<div className="text-center p-6 bg-white">
<h3 className="font-playfair text-lg font-semibold text-rose mb-3">Live Online Classes</h3>
<p className="text-sm text-gray-600">Accessible from anywhere</p>
</div>
<div className="text-center p-6 bg-white">
<h3 className="font-playfair text-lg font-semibold text-rose mb-3">Workshops & Events</h3>
<p className="text-sm text-gray-600">Special themed sessions and gatherings</p>
</div> </div>
</div> </div>
<div className="flex flex-col md:flex-row gap-4 items-center bg-white bg-opacity-50 p-6 rounded-lg shadow-sm"> <div className="p-8 bg-white mb-16">
<div className="md:w-1/4 text-center mb-4 md:mb-0"> <div className="flex flex-col md:flex-row items-center justify-between">
<div className="inline-flex items-center justify-center w-20 h-20 rounded-full bg-rose bg-opacity-20"> <div>
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10 text-rose" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <h3 className="font-playfair text-xl font-semibold text-gray-800 mb-3">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /> In-Person Classes
</svg>
</div>
</div>
<div className="md:w-3/4">
<h3 className="font-playfair text-xl font-semibold text-gray-800">Reformer & Equipment Pilates</h3>
<p className="text-gray-600">Deeper resistance, alignment, and control</p>
</div>
</div>
<div className="flex flex-col md:flex-row gap-4 items-center bg-white bg-opacity-50 p-6 rounded-lg shadow-sm">
<div className="md:w-1/4 text-center mb-4 md:mb-0">
<div className="inline-flex items-center justify-center w-20 h-20 rounded-full bg-rose bg-opacity-20">
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10 text-rose" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
</svg>
</div>
</div>
<div className="md:w-3/4">
<h3 className="font-playfair text-xl font-semibold text-gray-800">Beginner Foundations Series</h3>
<p className="text-gray-600">For those new to movement or Pilates</p>
</div>
</div>
<div className="flex flex-col md:flex-row gap-4 items-center bg-white bg-opacity-50 p-6 rounded-lg shadow-sm">
<div className="md:w-1/4 text-center mb-4 md:mb-0">
<div className="inline-flex items-center justify-center w-20 h-20 rounded-full bg-rose bg-opacity-20">
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10 text-rose" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" />
</svg>
</div>
</div>
<div className="md:w-3/4">
<h3 className="font-playfair text-xl font-semibold text-gray-800">Live Online Classes</h3>
<p className="text-gray-600">Accessible from anywhere</p>
</div>
</div>
<div className="flex flex-col md:flex-row gap-4 items-center bg-white bg-opacity-50 p-6 rounded-lg shadow-sm">
<div className="md:w-1/4 text-center mb-4 md:mb-0">
<div className="inline-flex items-center justify-center w-20 h-20 rounded-full bg-rose bg-opacity-20">
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10 text-rose" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
</svg>
</div>
</div>
<div className="md:w-3/4">
<h3 className="font-playfair text-xl font-semibold text-gray-800">Workshops & Community Events</h3>
<p className="text-gray-600">Special themed sessions and gatherings</p>
</div>
</div>
</div>
<div className="mt-12 p-6 bg-rose bg-opacity-10 rounded-lg border border-rose border-opacity-20 max-w-3xl mx-auto">
<h3 className="font-playfair text-xl font-semibold text-gray-800 flex items-center mb-3">
<span className="text-2xl mr-2"></span> In-Person Classes
</h3> </h3>
<p className="text-gray-700">Join Fadia for physical classes in the heart of Cairo at the renowned Nun Center, Zamalek</p> <p className="text-gray-700">Join Fadia for physical classes in the heart of Cairo at the renowned Nun Center, Zamalek</p>
<p className="text-gray-700 mt-2"><span className="font-medium">📍</span> Classes every Wednesday & Saturday</p> <p className="text-gray-700 mt-2">📍 Classes every Wednesday & Saturday</p>
<div className="mt-4">
<a href="https://nuncenter.com" className="inline-flex items-center text-rose hover:text-rose-600 transition-colors">
<span className="mr-1">🔗</span> Contact Nun Center
</a>
</div> </div>
<a href="https://nuncenter.com" className="mt-4 md:mt-0 inline-flex items-center text-rose hover:text-rose-600 transition-colors font-medium">
Contact Nun Center
</a>
</div> </div>
</div> </div>
@ -178,9 +130,6 @@ export function ClassesSection() {
)} )}
</div> </div>
</div> </div>
</div>
<SectionDividerBottom color="rose" />
</section> </section>
); );
} }

View File

@ -3,8 +3,6 @@ import { Testimonial } from "./testimonial";
import { useAuth } from "@/hooks/use-auth"; import { useAuth } from "@/hooks/use-auth";
import { Link } from "wouter"; import { Link } from "wouter";
import { Card, CardContent } from "@/components/ui/card"; import { Card, CardContent } from "@/components/ui/card";
import { SectionDivider, SectionDividerBottom, StarDivider } from "@/components/ui/section-divider";
import { IslamicPattern } from "@/components/ui/section-divider";
export function CommunitySection() { export function CommunitySection() {
const { user } = useAuth(); const { user } = useAuth();
@ -47,44 +45,28 @@ export function CommunitySection() {
}, [user]); }, [user]);
return ( return (
<section className="relative overflow-hidden"> <section className="py-20 bg-rose text-white">
<SectionDivider color="rose" />
<div className="relative py-20 bg-rose">
<IslamicPattern color="rose" opacity={15} />
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-16"> <div className="text-center mb-16">
<h2 className="text-3xl md:text-4xl font-playfair font-bold text-white relative inline-block"> <h2 className="text-3xl md:text-4xl font-playfair font-semibold mb-4">
<span className="relative z-10">Our Community</span> Our Community
<div className="absolute -bottom-3 left-0 w-full h-1 bg-white opacity-30"></div>
</h2> </h2>
<div className="flex items-center justify-center py-6"> <p className="max-w-3xl mx-auto">
<div className="w-1/3 h-px bg-white opacity-30"></div>
<div className="mx-4">
<svg width="40" height="40" viewBox="0 0 100 100">
<polygon
points="50,10 61,35 90,35 65,55 75,80 50,65 25,80 35,55 10,35 39,35"
fill="#FFFFFF"
fillOpacity="0.8"
/>
</svg>
</div>
<div className="w-1/3 h-px bg-white opacity-30"></div>
</div>
<p className="mt-6 max-w-3xl mx-auto text-white text-opacity-90">
A Global Space for Movement & Connection A Global Space for Movement & Connection
</p> </p>
<p className="mt-3 max-w-3xl mx-auto text-white text-opacity-80"> <p className="mt-3 max-w-3xl mx-auto text-white text-opacity-80">
Whether you're joining from your living room in Cairo or your studio in Berlin, you're part of a larger collectivea community that values strength, softness, breath, and belonging. Whether you're joining from your living room in Cairo or your studio in Berlin, you're part of a larger collectivea community that values strength, softness, breath, and belonging.
</p> </p>
<p className="mt-3 max-w-3xl mx-auto text-white text-opacity-80">
Here, we move to feel good. To age with agency. To grow stronger with grace.
</p>
</div> </div>
<Card className="rounded-xl overflow-hidden shadow-xl"> <div className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-16">
<div className="border-b border-gray-200 py-4 px-6 bg-gray-50"> {testimonials.map((testimonial, index) => (
<Testimonial key={index} {...testimonial} />
))}
</div>
<Card className="bg-white text-gray-800 overflow-hidden">
<div className="border-b border-gray-200 py-4 px-6">
<h3 className="font-playfair font-semibold text-xl">Community Digital Whiteboard</h3> <h3 className="font-playfair font-semibold text-xl">Community Digital Whiteboard</h3>
</div> </div>
@ -125,7 +107,7 @@ export function CommunitySection() {
</div> </div>
{!user && ( {!user && (
<Link href="/auth"> <Link href="/auth">
<span className="bg-rose text-white font-medium py-2 px-6 rounded-full hover:bg-opacity-90 transition duration-300 cursor-pointer"> <span className="bg-rose text-white font-medium py-2 px-6 hover:bg-opacity-90 transition duration-300 cursor-pointer">
Sign Up to Participate Sign Up to Participate
</span> </span>
</Link> </Link>
@ -133,18 +115,7 @@ export function CommunitySection() {
</div> </div>
</div> </div>
</Card> </Card>
<div className="mt-16">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{testimonials.map((testimonial, index) => (
<Testimonial key={index} {...testimonial} />
))}
</div> </div>
</div>
</div>
</div>
<SectionDividerBottom color="rose" />
</section> </section>
); );
} }

View File

@ -1,17 +1,10 @@
import { Link } from "wouter"; import { Link } from "wouter";
import { SectionDivider, SectionDividerBottom } from "@/components/ui/section-divider";
import { IslamicPattern } from "@/components/ui/section-divider";
export function CTASection() { export function CTASection() {
return ( return (
<section className="relative overflow-hidden"> <section className="py-20 bg-purple text-white">
<SectionDivider color="purple" />
<div className="relative py-20 bg-purple text-white">
<IslamicPattern color="purple" opacity={10} />
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<h2 className="text-3xl md:text-4xl font-playfair font-bold text-white mb-6"> <h2 className="text-3xl md:text-4xl font-playfair font-semibold mb-6">
Ready to feel stronger, more connected, and at home in your body? Ready to feel stronger, more connected, and at home in your body?
</h2> </h2>
@ -22,21 +15,18 @@ export function CTASection() {
<div className="flex flex-col sm:flex-row justify-center space-y-4 sm:space-y-0 sm:space-x-6"> <div className="flex flex-col sm:flex-row justify-center space-y-4 sm:space-y-0 sm:space-x-6">
<Link <Link
href="/classes" href="/classes"
className="bg-white text-purple font-medium py-3 px-8 rounded-full transition duration-300 text-center hover:bg-opacity-90" className="bg-white text-purple font-medium py-3 px-10 hover:bg-opacity-90 transition duration-300"
> >
Join a Class Join a Class
</Link> </Link>
<Link <Link
href="/contact" href="/contact"
className="bg-transparent border-2 border-white text-white font-medium py-3 px-8 rounded-full transition duration-300 text-center hover:bg-white hover:bg-opacity-10" className="bg-transparent border border-white text-white font-medium py-3 px-10 hover:bg-white hover:text-purple transition duration-300"
> >
Contact Fadia Contact Fadia
</Link> </Link>
</div> </div>
</div> </div>
</div>
<SectionDividerBottom color="purple" />
</section> </section>
); );
} }

View File

@ -4,8 +4,6 @@ import { apiRequest } from "@/lib/queryClient";
import { insertNewsletterSchema } from "@shared/schema"; import { insertNewsletterSchema } from "@shared/schema";
import { useToast } from "@/hooks/use-toast"; import { useToast } from "@/hooks/use-toast";
import { Loader2 } from "lucide-react"; import { Loader2 } from "lucide-react";
import { SectionDivider, SectionDividerBottom, CrescentDivider } from "@/components/ui/section-divider";
import { IslamicPattern } from "@/components/ui/section-divider";
export function NewsletterSection() { export function NewsletterSection() {
const { toast } = useToast(); const { toast } = useToast();
@ -60,52 +58,48 @@ export function NewsletterSection() {
}; };
return ( return (
<section className="relative overflow-hidden"> <section className="py-20 bg-teal text-white">
<SectionDivider color="teal" />
<div className="relative py-20 bg-teal text-white">
<IslamicPattern color="teal" opacity={10} />
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-12"> <div className="text-center mb-16">
<h2 className="text-3xl md:text-4xl font-playfair font-bold text-white relative inline-block"> <h2 className="text-3xl md:text-4xl font-playfair font-semibold mb-4">
<span className="relative z-10">Join Our Newsletter</span> Join Our Newsletter
<div className="absolute -bottom-3 left-0 w-full h-1 bg-white opacity-30"></div>
</h2> </h2>
<div className="flex items-center justify-center py-6"> <p className="max-w-3xl mx-auto">
<div className="w-1/3 h-px bg-white opacity-30"></div>
<div className="mx-4">
<svg width="40" height="40" viewBox="0 0 100 100">
<path
d="M50,10 A40,40 0 0 1 50,90 A40,40 0 0 1 50,10 A30,30 0 0 0 50,70 A30,30 0 0 0 50,10"
fill="#FFFFFF"
fillOpacity="0.8"
/>
<circle cx="60" cy="40" r="5" fill="#0c8991" />
</svg>
</div>
<div className="w-1/3 h-px bg-white opacity-30"></div>
</div>
<p className="mt-4 max-w-2xl mx-auto text-white text-opacity-90">
Stay updated with wellness tips, special class offerings, and community events Stay updated with wellness tips, special class offerings, and community events
</p> </p>
</div> </div>
<div className="flex flex-col md:flex-row items-center justify-between bg-white/10 p-8 rounded-lg"> <div className="max-w-2xl mx-auto">
<div className="md:w-1/2 mb-8 md:mb-0 md:pr-10"> <form className="bg-white/10 p-8" onSubmit={handleSubmit}>
<form className="mt-6" onSubmit={handleSubmit}> <div className="flex flex-col mb-6">
<div className="flex flex-col sm:flex-row gap-4"> <label htmlFor="email" className="mb-2 text-white font-medium">Email Address</label>
<input <input
id="email"
type="email" type="email"
placeholder="Your email address" placeholder="Your email address"
className="px-4 py-3 rounded-md bg-white bg-opacity-20 border border-teal-300 placeholder-teal-100 text-white focus:outline-none focus:border-white w-full sm:w-auto flex-grow" className="px-4 py-3 bg-white bg-opacity-20 border border-white border-opacity-30 placeholder-white placeholder-opacity-60 text-white focus:outline-none focus:border-white"
value={email} value={email}
onChange={(e) => setEmail(e.target.value)} onChange={(e) => setEmail(e.target.value)}
required required
/> />
</div>
<div className="mb-6">
<label className="flex items-center cursor-pointer">
<input
type="checkbox"
className="form-checkbox h-4 w-4 border-white text-teal"
checked={agreedToTerms}
onChange={(e) => setAgreedToTerms(e.target.checked)}
required
/>
<span className="ml-2 text-white">I agree to receive emails from Pilates with Fadia</span>
</label>
</div>
<button <button
type="submit" type="submit"
className="px-6 py-3 bg-white text-teal font-medium rounded-md hover:bg-opacity-90 transition duration-300 flex items-center justify-center" className="w-full px-6 py-3 bg-white text-teal font-medium hover:bg-opacity-90 transition duration-300 flex items-center justify-center"
disabled={newsletterMutation.isPending} disabled={newsletterMutation.isPending}
> >
{newsletterMutation.isPending ? ( {newsletterMutation.isPending ? (
@ -117,51 +111,9 @@ export function NewsletterSection() {
"Subscribe" "Subscribe"
)} )}
</button> </button>
</div>
<div className="mt-3">
<label className="inline-flex items-center cursor-pointer">
<input
type="checkbox"
className="form-checkbox h-4 w-4 bg-white border-teal-300 text-white"
checked={agreedToTerms}
onChange={(e) => setAgreedToTerms(e.target.checked)}
required
/>
<span className="ml-2 text-sm text-teal-100">I agree to receive emails from Pilates with Fadia</span>
</label>
</div>
</form> </form>
</div> </div>
<div className="md:w-1/2">
<div className="grid grid-cols-2 gap-4">
<img
src="https://images.unsplash.com/photo-1518611012118-696072aa579a?ixlib=rb-4.0.3&auto=format&fit=crop&w=400&h=300"
alt="Peaceful pilates studio"
className="rounded-lg shadow-lg"
/>
<img
src="https://images.unsplash.com/photo-1599901860904-17e6ed7083a0?ixlib=rb-4.0.3&auto=format&fit=crop&w=400&h=300"
alt="Group pilates session"
className="rounded-lg shadow-lg"
/>
<img
src="https://images.unsplash.com/photo-1518310383802-640c2de311b2?ixlib=rb-4.0.3&auto=format&fit=crop&w=400&h=300"
alt="Pilates equipment detail"
className="rounded-lg shadow-lg"
/>
<img
src="https://images.unsplash.com/photo-1519167758481-83f550bb49b3?ixlib=rb-4.0.3&auto=format&fit=crop&w=400&h=300"
alt="Wellness space with cultural elements"
className="rounded-lg shadow-lg"
/>
</div> </div>
</div>
</div>
</div>
</div>
<SectionDividerBottom color="teal" />
</section> </section>
); );
} }