"use client"; import { useEffect, useState } from "react"; import { useAuthStore } from "@/stores/auth-store"; import { AdminSidebar } from "@/components/layout/admin-sidebar"; import { AdminHeader } from "@/components/layout/admin-header"; import { SidebarProvider, SidebarInset } from "@/components/ui/sidebar"; import { LoginPage } from "@/app/login/page"; import { DashboardPage } from "@/components/dashboard/dashboard-page"; import { CatalogHub } from "@/components/catalog/catalog-hub"; import { UsersPage } from "@/components/users/users-page"; import { UserDetailPage } from "@/components/users/user-detail-page"; import { WalletsPage } from "@/components/wallets/wallets-page"; import { PurchasesPage } from "@/components/purchases/purchases-page"; import { AuditPage } from "@/components/audit/audit-page"; import { SettingsPage } from "@/components/settings/settings-page"; import { LocalesPage } from "@/components/locales/locales-page"; import { SeedPage } from "@/components/seed/seed-page"; import { ChatbotSettingsPage } from "@/components/chatbot/chatbot-settings-page"; import { LeadsPage } from "@/components/leads/leads-page"; import { LeadDetailPage } from "@/components/leads/lead-detail-page"; import { ErrorBoundary } from "@/components/shared/error-boundary"; import { AdminFooter } from "@/components/layout/admin-footer"; import { useKeyboardShortcuts } from "@/hooks/use-keyboard-shortcuts"; import { Search } from "lucide-react"; import { Button } from "@/components/ui/button"; export default function AppPage() { const { isAuthenticated, checkSession } = useAuthStore(); const [ready, setReady] = useState(false); const [page, setPage] = useState("/"); const [pageParams, setPageParams] = useState>({}); useEffect(() => { checkSession().then(() => setReady(true)); }, [checkSession]); useEffect(() => { const handleHash = () => { const hash = window.location.hash.slice(1) || "/"; const [path, search] = hash.split("?"); const params: Record = {}; if (search) { search.split("&").forEach((pair) => { const [k, v] = pair.split("="); if (k && v) params[decodeURIComponent(k)] = decodeURIComponent(v); }); } setPage(path); setPageParams(params); }; window.addEventListener("hashchange", handleHash); handleHash(); return () => window.removeEventListener("hashchange", handleHash); }, []); useEffect(() => { const handler = (e: MouseEvent) => { const target = e.target as HTMLElement; const link = target.closest("a"); if (!link) return; const href = link.getAttribute("href"); if (!href) return; if (href.startsWith("http") || href.startsWith("/api")) return; e.preventDefault(); window.location.hash = href; }; document.addEventListener("click", handler); return () => document.removeEventListener("click", handler); }, []); useKeyboardShortcuts(); if (!ready) { return (
{/* Background gradient orbs */}
TS

TG Shop Admin

Loading your workspace...

{/* Progress bar */}
); } if (!isAuthenticated) { return ; } const renderPage = () => { if (page === "/") return ; if (page === "/catalog") return ; if (page === "/users") return ; if (page.startsWith("/users/")) return ; if (page === "/wallets") return ; if (page === "/purchases") return ; if (page === "/audit") return ; if (page === "/settings") return ; if (page === "/locales") return ; if (page === "/chatbot") return ; if (page === "/leads") return ; if (page.startsWith("/leads/")) return ; if (page === "/seed") return ; return (

Page not found

The page you're looking for doesn't exist.

); }; return (
{renderPage()}
); }