diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx index 3724163..860c365 100644 --- a/src/app/(auth)/layout.tsx +++ b/src/app/(auth)/layout.tsx @@ -1,5 +1,5 @@ -import { Scissors } from "lucide-react"; import { getBranding } from "@/lib/business/branding"; +import { AuthHeader } from "@/features/auth/components/auth-header"; /** * Every auth page (sign-in, register, forgot-password, verify) shares @@ -24,14 +24,7 @@ export default async function AuthLayout({ children }: { children: React.ReactNo return (
-
- {branding.logoUrl ? ( - // eslint-disable-next-line @next/next/no-img-element -- external, business-supplied URL. - - ) : ( -
+ {children}
diff --git a/src/app/(auth)/register/page.tsx b/src/app/(auth)/register/page.tsx index fa8021b..18a746d 100644 --- a/src/app/(auth)/register/page.tsx +++ b/src/app/(auth)/register/page.tsx @@ -12,7 +12,7 @@ export default async function RegisterPage() { return (

Join {branding.name}

-

Create an account to track your appointments and loyalty.

+

Create an account to track your appointments & loyalty.

{/* useSearchParams in RegisterForm requires a Suspense boundary. */} diff --git a/src/app/(auth)/sign-in/page.tsx b/src/app/(auth)/sign-in/page.tsx index 6a37132..8fce6db 100644 --- a/src/app/(auth)/sign-in/page.tsx +++ b/src/app/(auth)/sign-in/page.tsx @@ -11,8 +11,8 @@ export default async function SignInPage() { const branding = await getBranding(); return (
-

Welcome back to {branding.name}

-

+

Welcome back to {branding.name}

+

Please enter your credentials to access your appointments.

{/* useSearchParams in SignInForm requires a Suspense boundary. */} diff --git a/src/app/(customer)/home/page.tsx b/src/app/(customer)/home/page.tsx index 4f67b63..0e49857 100644 --- a/src/app/(customer)/home/page.tsx +++ b/src/app/(customer)/home/page.tsx @@ -143,12 +143,12 @@ export default async function CustomerHomePage() {
{/* Hero — an owner-managed gallery (see /owner/settings/gallery), matching the content width rather than bleeding edge-to-edge. */} {heroGalleryImages.length > 0 && ( -
+
)} -
+
{/* {session?.user && (

Good to see you, {session.user.name?.split(" ")[0] ?? "there"} diff --git a/src/app/page.tsx b/src/app/page.tsx index 8f818cd..01a0ee6 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -33,41 +33,50 @@ export default async function WelcomePage() { const [branding, business] = await Promise.all([getBranding(), getPrimaryBusiness()]); const guestBookingEnabled = business.bookingRule?.allowGuestBooking ?? false; - const hasBackground = !!(branding.welcomeBackgroundDesktopUrl || branding.welcomeBackgroundMobileUrl); + // The hero card's photo — the welcome-specific background the owner + // uploaded for this exact screen takes priority (it was purpose-built for + // it, see BrandingInfo.welcomeBackgroundMobileUrl/DesktopUrl); the + // general-purpose cover shot is only a fallback for a business that + // configured a cover image but never set a dedicated welcome background. + // Desktop and mobile keep their own independent images, same as before. + const heroImageMobileUrl = branding.welcomeBackgroundMobileUrl ?? branding.welcomeBackgroundDesktopUrl ?? branding.coverImageUrl; + const heroImageDesktopUrl = branding.welcomeBackgroundDesktopUrl ?? branding.welcomeBackgroundMobileUrl ?? branding.coverImageUrl; + + const hasHeroImage = !!(heroImageMobileUrl || heroImageDesktopUrl); return (

- {/* Desktop/mobile are independent images (not one image cropped two ways) — see BrandingInfo.welcomeBackgroundDesktopUrl/MobileUrl. Falls back to the plain bg-ink above when neither is set. */} - {branding.welcomeBackgroundDesktopUrl && ( -