diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx index f7164f5..1a438fd 100644 --- a/app/(auth)/login/page.tsx +++ b/app/(auth)/login/page.tsx @@ -21,21 +21,27 @@ export default function Login() { {/* Background Image */}
Medical professionals {/* Overlay for better readability */} -
+
{/* Branding - Top Left */} -
- - Attune Heart Therapy +
+ +
+ +
+ + Attune Heart Therapy + +
diff --git a/app/(pages)/book-now/page.tsx b/app/(pages)/book-now/page.tsx index 7176275..49778b8 100644 --- a/app/(pages)/book-now/page.tsx +++ b/app/(pages)/book-now/page.tsx @@ -78,9 +78,8 @@ export default function BookNowPage() { lastName: "", email: "", phone: "", - appointmentType: "", - preferredDate: "", - preferredTime: "", + preferredDays: [] as string[], + preferredTimes: [] as string[], message: "", }); const [loading, setLoading] = useState(false); @@ -105,17 +104,41 @@ export default function BookNowPage() { setError(null); try { - // Convert time to 24-hour format for ISO string - const time24 = formData.preferredTime.includes("PM") - ? formData.preferredTime.replace("PM", "").trim().split(":").map((v, i) => - i === 0 ? (parseInt(v) === 12 ? 12 : parseInt(v) + 12) : v - ).join(":") - : formData.preferredTime.replace("AM", "").trim().split(":").map((v, i) => - i === 0 ? (parseInt(v) === 12 ? "00" : v.padStart(2, "0")) : v - ).join(":"); + if (formData.preferredDays.length === 0) { + setError("Please select at least one available day."); + setLoading(false); + return; + } + + if (formData.preferredTimes.length === 0) { + setError("Please select at least one preferred time."); + setLoading(false); + return; + } + + // For now, we'll use the first selected day and first selected time + // This can be adjusted based on your backend requirements + const firstDay = formData.preferredDays[0]; + const firstTime = formData.preferredTimes[0]; + const timeMap: { [key: string]: string } = { + morning: "09:00", + lunchtime: "12:00", + afternoon: "14:00", + }; + const time24 = timeMap[firstTime] || "09:00"; + + // Get next occurrence of the first selected day + const today = new Date(); + const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + const targetDayIndex = days.indexOf(firstDay); + let daysUntilTarget = (targetDayIndex - today.getDay() + 7) % 7; + if (daysUntilTarget === 0) daysUntilTarget = 7; // Next week if today + const targetDate = new Date(today); + targetDate.setDate(today.getDate() + daysUntilTarget); + const dateString = targetDate.toISOString().split("T")[0]; // Combine date and time into scheduled_at (ISO format) - const dateTimeString = `${formData.preferredDate}T${time24}:00Z`; + const dateTimeString = `${dateString}T${time24}:00Z`; // Prepare request payload const payload = { @@ -123,9 +146,10 @@ export default function BookNowPage() { last_name: formData.lastName, email: formData.email, phone: formData.phone, - appointment_type: formData.appointmentType, scheduled_at: dateTimeString, duration: 60, // Default to 60 minutes + preferred_days: formData.preferredDays, + preferred_times: formData.preferredTimes, notes: formData.message || "", }; @@ -199,6 +223,24 @@ export default function BookNowPage() { setFormData((prev) => ({ ...prev, [field]: value })); }; + const handleDayToggle = (day: string) => { + setFormData((prev) => { + const days = prev.preferredDays.includes(day) + ? prev.preferredDays.filter((d) => d !== day) + : [...prev.preferredDays, day]; + return { ...prev, preferredDays: days }; + }); + }; + + const handleTimeToggle = (time: string) => { + setFormData((prev) => { + const times = prev.preferredTimes.includes(time) + ? prev.preferredTimes.filter((t) => t !== time) + : [...prev.preferredTimes, time]; + return { ...prev, preferredTimes: times }; + }); + }; + const formatDateTime = (dateString: string) => { const date = new Date(dateString); return date.toLocaleString("en-US", { @@ -219,8 +261,8 @@ export default function BookNowPage() {
Therapy session -
- - -
- -
+
- - handleChange("preferredDate", e.target.value) - } - required - min={new Date().toISOString().split("T")[0]} - className={`h-11 ${isDark ? 'bg-gray-700 border-gray-600 text-white' : 'bg-white border-gray-300 text-gray-900'}`} - /> +
+ {['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'].map((day) => ( + + ))} +
- +
+ {[ + { value: 'morning', label: 'Morning' }, + { value: 'lunchtime', label: 'Lunchtime' }, + { value: 'afternoon', label: 'Afternoon' } + ].map((time) => ( + + ))} +
diff --git a/components/ClientFocus.tsx b/components/ClientFocus.tsx index 147aab1..237a374 100644 --- a/components/ClientFocus.tsx +++ b/components/ClientFocus.tsx @@ -5,6 +5,7 @@ import { useInView } from "framer-motion"; import { useRef } from "react"; import { Users, UserCheck, Globe } from "lucide-react"; import { useAppTheme } from "@/components/ThemeProvider"; +import Image from "next/image"; export function ClientFocus() { const ref = useRef(null); @@ -94,7 +95,7 @@ export function ClientFocus() { animate={isInView ? { opacity: 1, y: 0 } : {}} transition={{ duration: 0.8, delay: 0.2 }} > - Client Focus + Who We Serve @@ -143,7 +144,7 @@ export function ClientFocus() {

Individuals

- {/* Ethnicity */} + {/* Communities */}
-
- -
-

Ethnicity

+ +

Providing Support to all of South Florida's Diverse Communities

+
+
+
+ + Organization of American States Flags + +
-

Black and African American

diff --git a/components/Finances.tsx b/components/Finances.tsx index 59d1755..3b68856 100644 --- a/components/Finances.tsx +++ b/components/Finances.tsx @@ -3,7 +3,7 @@ import { motion } from "framer-motion"; import { useInView } from "framer-motion"; import { useRef } from "react"; -import { CreditCard, DollarSign, Shield } from "lucide-react"; +import { CreditCard, DollarSign } from "lucide-react"; import { useAppTheme } from "@/components/ThemeProvider"; export function Finances() { @@ -19,31 +19,6 @@ export function Finances() { "Visa" ]; - const insuranceProviders = [ - "Aetna", - "Aetna - Medicare", - "Aetna - WebTPA", - "All Savers", - "Ambetter", - "AvMed", - "Cigna and Evernorth", - "EAP:Cigna", - "EAP:UnitedHealthcare/Optum", - "Golden Rule", - "Harvard Pilgrim/United", - "Humana", - "Humana - Medicare", - "Humana Dual- Medicaid/Medicare", - "Medicaid", - "Optum", - "Oscar Health", - "Oxford", - "Surest (formerly Bind)", - "Tufts Health/Cigna", - "UHC/Optum - Medicare", - "United Medical Resources (UMR)", - "UnitedHealthcare UHC | UBH" - ]; return (
-
+
{/* Fees */} - {/* Insurance */} - -
-
- -
-

Insurance

-
-
- {insuranceProviders.map((provider, index) => ( - - {provider} - - ))} -
-
diff --git a/components/Hero.tsx b/components/Hero.tsx index 6180799..a64205e 100644 --- a/components/Hero.tsx +++ b/components/Hero.tsx @@ -18,7 +18,7 @@ export function HeroSection() {
diff --git a/components/Services.tsx b/components/Services.tsx index 22d1d23..4c714e0 100644 --- a/components/Services.tsx +++ b/components/Services.tsx @@ -220,8 +220,8 @@ export function Services() { animate={isInView ? { opacity: 1 } : {}} transition={{ duration: 0.8, delay: 0.9 }} > - Therapy is tailored for children (age 6–10), teens, adults, and older adults, with services offered to individuals and a - special focus on supporting Black and African American families in Miami and Hollywood, Florida. + Therapy is tailored for children (age 6–10), teens, adults, and older adults, with services offered to individuals. + I welcome clients from diverse backgrounds and communities throughout Miami and Hollywood, Florida.
diff --git a/public/flagss.png b/public/flagss.png new file mode 100644 index 0000000..f3410ca Binary files /dev/null and b/public/flagss.png differ diff --git a/public/section-image.png b/public/section-image.png new file mode 100644 index 0000000..75371a9 Binary files /dev/null and b/public/section-image.png differ diff --git a/public/session.jpg b/public/session.jpg new file mode 100644 index 0000000..df82aa2 Binary files /dev/null and b/public/session.jpg differ diff --git a/public/woman.jpg b/public/woman.jpg new file mode 100644 index 0000000..c093e1f Binary files /dev/null and b/public/woman.jpg differ