import "./global.css";

import { Toaster } from "@/components/ui/toaster";
import { createRoot } from "react-dom/client";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { HelmetProvider } from "react-helmet-async";
import { useEffect } from "react";
import Index from "./pages/Index";
import NotFound from "./pages/NotFound";
import Products from "./pages/Products";
import Contact from "./pages/Contact";
import QuoteRequest from "./pages/QuoteRequest";
import About from "./pages/About";
import Solutions from "./pages/Solutions";
import { Header } from "./components/Header";
import { Footer } from "./components/Footer";
import { LanguageProvider, useLanguage } from "./contexts/LanguageContext";
import { SettingsProvider, useSettings } from "@/contexts/SettingsContext";
import { AboutProvider } from "@/contexts/AboutContext";
import { SlidersProvider } from "@/contexts/SlidersContext";
import Admin from "./pages/Admin";
import AdminProducts from "./pages/AdminProducts";
import AdminSettings from "./pages/AdminSettings";
import AdminSliders from "./pages/AdminSliders";
import AdminPortfolio from "./pages/AdminPortfolio";
import AdminHomeStats from "./pages/AdminHomeStats";
import AdminCorporateCards from "./pages/AdminCorporateCards";
import AdminAbout from "./pages/AdminAbout";
import AdminContact from "./pages/AdminContact";
import AdminLayout from "./components/AdminLayout";
import SiteLayout from "./components/SiteLayout";
import { ScrollToTop } from "./components/ScrollToTop";

// Suppress React DevTools message in development
if (process.env.NODE_ENV === 'development') {
  const originalWarn = console.warn;
  console.warn = (...args) => {
    if (args[0]?.includes?.('Download the React DevTools')) return;
    originalWarn.apply(console, args);
  };
}
import { ProtectedRoute } from "./pages/Admin";
import Catalog from "./pages/Catalog";

const queryClient = new QueryClient();

// Placeholder component for pages not yet implemented
const PlaceholderPage = ({ title }: { title: string }) => {
  const { t } = useLanguage();

  return (
    <div className="min-h-screen bg-steel-50 flex items-center justify-center">
      <div className="text-center">
        <h1 className="text-3xl font-bold text-steel-800 mb-4">{title}</h1>
        <p className="text-steel-600">{t("common.coming.soon")}</p>
      </div>
    </div>
  );
};

const AppContent = () => {
  const { settings } = useSettings();

  useEffect(() => {
    if (settings?.site_favicon) {
      let link: HTMLLinkElement | null = document.querySelector("link[rel~='icon']");
      if (!link) {
        link = document.createElement("link");
        link.rel = "icon";
        document.head.appendChild(link);
      }
      link.href = settings.site_favicon.startsWith("/") ? settings.site_favicon : "/" + settings.site_favicon;
    }
  }, [settings?.site_favicon]);

  return (
    <BrowserRouter>
      <ScrollToTop />
      {/* Site (ziyaretçi) layout */}
      <Routes>
        <Route element={<SiteLayout />}>
          <Route path="/" element={<Index />} />
          <Route path="/hakkimizda" element={<About />} />
          <Route path="/cozumlerimiz" element={<Solutions />} />
          <Route path="/urunler" element={<Products />} />
          <Route path="/katalog" element={<Catalog />} />
          <Route path="/iletisim" element={<Contact />} />
          <Route path="/teklif" element={<QuoteRequest />} />
        </Route>
        {/* Admin layout */}
        <Route element={<AdminLayout />}>
          <Route path="/admin" element={<Admin />} />
          <Route element={<ProtectedRoute />}>
            <Route path="/admin/products" element={<AdminProducts />} />
            <Route path="/admin/settings" element={<AdminSettings />} />
            <Route path="/admin/sliders" element={<AdminSliders />} />
            <Route path="/admin/portfolio" element={<AdminPortfolio />} />
            <Route path="/admin/home-stats" element={<AdminHomeStats />} />
            <Route path="/admin/corporate-cards" element={<AdminCorporateCards />} />
            <Route path="/admin/about" element={<AdminAbout />} />
            <Route path="/admin/contact" element={<AdminContact />} />

          </Route>
        </Route>
        {/* NotFound */}
        <Route path="*" element={<NotFound />} />
      </Routes>
    </BrowserRouter>
  );
};

const App = () => {
  return (
    <HelmetProvider>
      <QueryClientProvider client={queryClient}>
        <TooltipProvider>
          <SettingsProvider>
            <AboutProvider>
              <SlidersProvider>
                <LanguageProvider>
                  <Toaster />
                  <Sonner />
                  <AppContent />
                </LanguageProvider>
              </SlidersProvider>
            </AboutProvider>
          </SettingsProvider>
        </TooltipProvider>
      </QueryClientProvider>
    </HelmetProvider>
  );
};

createRoot(document.getElementById("root")!).render(<App />);
