"use client";

import { usePathname } from "next/navigation";
import { FloatingActions } from "@/components/FloatingActions";
import { Footer } from "@/components/Footer";
import { Navbar } from "@/components/Navbar";
import { CTASection } from "@/components/CTASection";
import { WebsiteTrafficTracker } from "@/components/WebsiteTrafficTracker";
import { PwaPushManager } from "@/components/PwaPushManager";
import { LocationProvider } from "@/lib/location-context";
import { UserAuthProvider } from "@/lib/user-auth";

type AppChromeProps = {
  children: React.ReactNode;
};

export function AppChrome({ children }: AppChromeProps) {
  const pathname = usePathname();
  const isAdmin = pathname.startsWith("/admin");
  const shouldUseUrlLocation = /^\/cities\/[^/]+/.test(pathname);

  if (isAdmin) {
    return <>{children}</>;
  }

  return (
    <LocationProvider suppressAutoDetect={shouldUseUrlLocation}>
      <UserAuthProvider>
        <div className="min-h-screen flex flex-col">
          <WebsiteTrafficTracker />
          <PwaPushManager />
          <Navbar />
          <main className="flex-1">{children}</main>
          <CTASection />
          <Footer />
          <FloatingActions />
        </div>
      </UserAuthProvider>
    </LocationProvider>
  );
}
