Update button labels in BookNowPage and HeroSection for consistency, and refactor Navbar to conditionally render navigation links and sign-in button based on user dashboard state.

This commit is contained in:
iamkiddy 2025-11-22 21:29:35 +00:00
parent 466194030a
commit a819dc3a04
4 changed files with 73 additions and 114 deletions

View File

@ -637,7 +637,7 @@ export default function BookNowPage() {
Submitting... Submitting...
</> </>
) : ( ) : (
"Submit Booking Request" "Request Appointment"
)} )}
</Button> </Button>
<p className={`text-xs text-center mt-4 ${isDark ? 'text-gray-400' : 'text-gray-500'}`}> <p className={`text-xs text-center mt-4 ${isDark ? 'text-gray-400' : 'text-gray-500'}`}>

View File

@ -3,7 +3,7 @@
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { useInView } from "framer-motion"; import { useInView } from "framer-motion";
import { useRef } from "react"; import { useRef } from "react";
import { CreditCard, DollarSign, Shield } from "lucide-react"; import { CreditCard, DollarSign } from "lucide-react";
import { useAppTheme } from "@/components/ThemeProvider"; import { useAppTheme } from "@/components/ThemeProvider";
export function Finances() { export function Finances() {
@ -19,31 +19,6 @@ export function Finances() {
"Visa" "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 ( return (
<section <section
@ -132,7 +107,7 @@ export function Finances() {
</motion.p> </motion.p>
</motion.div> </motion.div>
<div className="grid md:grid-cols-3 gap-6 mb-8"> <div className="grid md:grid-cols-2 gap-6 mb-8">
{/* Fees */} {/* Fees */}
<motion.div <motion.div
initial={{ opacity: 0, y: 20 }} initial={{ opacity: 0, y: 20 }}
@ -177,34 +152,6 @@ export function Finances() {
))} ))}
</div> </div>
</motion.div> </motion.div>
{/* Insurance */}
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={isInView ? { opacity: 1, y: 0 } : {}}
transition={{ duration: 0.5, delay: 0.4 }}
className="bg-card/50 backdrop-blur-sm rounded-2xl p-6 border border-border/50 hover:border-rose-500/50 hover:shadow-lg hover:shadow-rose-500/10 hover:scale-105 transition-all duration-300"
>
<div className="flex items-center gap-3 mb-4">
<div className="bg-gradient-to-br from-rose-500/20 via-pink-500/20 to-orange-500/20 dark:from-rose-500/30 dark:via-pink-500/30 dark:to-orange-500/30 p-3 rounded-xl">
<Shield className="h-6 w-6 text-rose-600 dark:text-rose-400" />
</div>
<h3 className="text-xl font-semibold text-foreground">Insurance</h3>
</div>
<div className="max-h-64 overflow-y-auto space-y-2 pr-2">
{insuranceProviders.map((provider, index) => (
<motion.p
key={provider}
className="text-sm text-muted-foreground"
initial={{ opacity: 0, x: -10 }}
animate={isInView ? { opacity: 1, x: 0 } : {}}
transition={{ duration: 0.3, delay: 0.5 + index * 0.02 }}
>
{provider}
</motion.p>
))}
</div>
</motion.div>
</div> </div>
</div> </div>
</section> </section>

View File

@ -133,7 +133,7 @@ export function HeroSection() {
> >
<a href="/book-now"> <a href="/book-now">
<Calendar className="mr-2 h-5 w-5" /> <Calendar className="mr-2 h-5 w-5" />
Book Appointment Request Appointment
<ArrowRight className="ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform" /> <ArrowRight className="ml-2 h-5 w-5 group-hover:translate-x-1 transition-transform" />
</a> </a>
</Button> </Button>

View File

@ -6,7 +6,7 @@ import { Heart, Menu, X } from "lucide-react";
import { ThemeToggle } from "@/components/ThemeToggle"; import { ThemeToggle } from "@/components/ThemeToggle";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { LoginDialog } from "@/components/LoginDialog"; import { LoginDialog } from "@/components/LoginDialog";
import { useRouter } from "next/navigation"; import { useRouter, usePathname } from "next/navigation";
import Link from "next/link"; import Link from "next/link";
import { useAppTheme } from "@/components/ThemeProvider"; import { useAppTheme } from "@/components/ThemeProvider";
@ -16,6 +16,8 @@ export function Navbar() {
const [loginDialogOpen, setLoginDialogOpen] = useState(false); const [loginDialogOpen, setLoginDialogOpen] = useState(false);
const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const router = useRouter(); const router = useRouter();
const pathname = usePathname();
const isUserDashboard = pathname?.startsWith("/user/dashboard");
const scrollToSection = (id: string) => { const scrollToSection = (id: string) => {
const element = document.getElementById(id); const element = document.getElementById(id);
@ -71,37 +73,41 @@ export function Navbar() {
</motion.div> </motion.div>
{/* Desktop Navigation */} {/* Desktop Navigation */}
<div className="hidden lg:flex items-center gap-4 xl:gap-6"> {!isUserDashboard && (
<button <div className="hidden lg:flex items-center gap-4 xl:gap-6">
onClick={() => scrollToSection("about")} <button
className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`} onClick={() => scrollToSection("about")}
> className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`}
About >
</button> About
<button </button>
onClick={() => scrollToSection("services")} <button
className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`} onClick={() => scrollToSection("services")}
> className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`}
Services >
</button> Services
<button </button>
onClick={() => scrollToSection("contact")} <button
className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`} onClick={() => scrollToSection("contact")}
> className={`text-sm font-medium transition-colors cursor-pointer px-3 py-2 rounded-lg ${isDark ? 'text-gray-300 hover:text-white hover:bg-gray-800' : 'text-gray-700 hover:text-primary hover:bg-gray-100'}`}
Contact >
</button> Contact
</div> </button>
</div>
)}
{/* Desktop Actions */} {/* Desktop Actions */}
<div className="hidden lg:flex items-center gap-2"> <div className="hidden lg:flex items-center gap-2">
<Button {!isUserDashboard && (
size="sm" <Button
variant="outline" size="sm"
className={`hover:opacity-90 hover:scale-105 transition-all text-xs sm:text-sm ${isDark ? 'border-gray-700 text-gray-300 hover:bg-gray-800' : ''}`} variant="outline"
onClick={() => setLoginDialogOpen(true)} className={`hover:opacity-90 hover:scale-105 transition-all text-xs sm:text-sm ${isDark ? 'border-gray-700 text-gray-300 hover:bg-gray-800' : ''}`}
> onClick={() => setLoginDialogOpen(true)}
Sign In >
</Button> Sign In
</Button>
)}
<ThemeToggle /> <ThemeToggle />
<Button size="sm" className="hover:opacity-90 hover:scale-105 transition-all text-xs sm:text-sm" asChild> <Button size="sm" className="hover:opacity-90 hover:scale-105 transition-all text-xs sm:text-sm" asChild>
<a href="/book-now">Book Now</a> <a href="/book-now">Book Now</a>
@ -155,36 +161,42 @@ export function Navbar() {
> >
<div className="flex flex-col p-4 sm:p-6 space-y-3 sm:space-y-4"> <div className="flex flex-col p-4 sm:p-6 space-y-3 sm:space-y-4">
{/* Mobile Navigation Links */} {/* Mobile Navigation Links */}
<button {!isUserDashboard && (
onClick={() => scrollToSection("about")} <>
className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`} <button
> onClick={() => scrollToSection("about")}
About className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`}
</button> >
<button About
onClick={() => scrollToSection("services")} </button>
className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`} <button
> onClick={() => scrollToSection("services")}
Services className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`}
</button> >
<button Services
onClick={() => scrollToSection("contact")} </button>
className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`} <button
> onClick={() => scrollToSection("contact")}
Contact className={`text-left text-sm sm:text-base font-medium py-2.5 sm:py-3 px-3 sm:px-4 rounded-lg transition-colors ${isDark ? 'text-gray-300 hover:bg-gray-800' : 'text-gray-700 hover:bg-gray-100'}`}
</button> >
Contact
</button>
</>
)}
<div className={`border-t pt-3 sm:pt-4 mt-3 sm:mt-4 space-y-2 sm:space-y-3 ${isDark ? 'border-gray-700' : 'border-gray-200'}`}> <div className={`border-t pt-3 sm:pt-4 mt-3 sm:mt-4 space-y-2 sm:space-y-3 ${isDark ? 'border-gray-700' : 'border-gray-200'}`}>
<Button {!isUserDashboard && (
variant="outline" <Button
className={`w-full justify-start text-sm sm:text-base ${isDark ? 'border-gray-700 text-gray-300 hover:bg-gray-800' : ''}`} variant="outline"
onClick={() => { className={`w-full justify-start text-sm sm:text-base ${isDark ? 'border-gray-700 text-gray-300 hover:bg-gray-800' : ''}`}
setLoginDialogOpen(true); onClick={() => {
setMobileMenuOpen(false); setLoginDialogOpen(true);
}} setMobileMenuOpen(false);
> }}
Sign In >
</Button> Sign In
</Button>
)}
<Button <Button
className="w-full justify-start bg-gradient-to-r from-rose-500 to-pink-600 hover:from-rose-600 hover:to-pink-700 text-white text-sm sm:text-base" className="w-full justify-start bg-gradient-to-r from-rose-500 to-pink-600 hover:from-rose-600 hover:to-pink-700 text-white text-sm sm:text-base"
asChild asChild