From 7fc10126df5e9edfbc7102eb62d6717ef2d5de35 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 15:17:47 +0000 Subject: [PATCH] Changes --- src/App.tsx | 73 ++--- src/components/AppLayout.tsx | 29 +- src/components/admin/settings/BrandingTab.tsx | 189 ++++++++++++- src/hooks/useBranding.tsx | 104 +++++++ src/pages/Index.tsx | 55 ++-- src/pages/Products.tsx | 12 +- src/pages/member/MemberOrders.tsx | 42 +-- src/pages/member/OrderDetail.tsx | 258 ++++++++++++++++++ supabase/config.toml | 6 + supabase/functions/create-meet-link/index.ts | 126 +++++++++ .../send-consultation-reminder/index.ts | 173 ++++++++++++ 11 files changed, 979 insertions(+), 88 deletions(-) create mode 100644 src/hooks/useBranding.tsx create mode 100644 src/pages/member/OrderDetail.tsx create mode 100644 supabase/functions/create-meet-link/index.ts create mode 100644 supabase/functions/send-consultation-reminder/index.ts diff --git a/src/App.tsx b/src/App.tsx index 9d38f82..f790e3c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,6 +5,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import { AuthProvider } from "@/hooks/useAuth"; import { CartProvider } from "@/contexts/CartContext"; +import { BrandingProvider } from "@/hooks/useBranding"; import Index from "./pages/Index"; import Auth from "./pages/Auth"; import Products from "./pages/Products"; @@ -20,6 +21,7 @@ import MemberDashboard from "./pages/member/MemberDashboard"; import MemberAccess from "./pages/member/MemberAccess"; import MemberOrders from "./pages/member/MemberOrders"; import MemberProfile from "./pages/member/MemberProfile"; +import OrderDetail from "./pages/member/OrderDetail"; // Admin pages import AdminDashboard from "./pages/admin/AdminDashboard"; @@ -37,40 +39,43 @@ const App = () => ( - - - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - {/* Member routes */} - } /> - } /> - } /> - } /> - - {/* Admin routes */} - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - } /> - - - + + + + + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + {/* Member routes */} + } /> + } /> + } /> + } /> + } /> + + {/* Admin routes */} + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> + + + + diff --git a/src/components/AppLayout.tsx b/src/components/AppLayout.tsx index 48e9eab..4ebd782 100644 --- a/src/components/AppLayout.tsx +++ b/src/components/AppLayout.tsx @@ -2,6 +2,7 @@ import { ReactNode, useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { useAuth } from '@/hooks/useAuth'; import { useCart } from '@/contexts/CartContext'; +import { useBranding } from '@/hooks/useBranding'; import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'; import { cn } from '@/lib/utils'; @@ -69,6 +70,7 @@ interface AppLayoutProps { export function AppLayout({ children }: AppLayoutProps) { const { user, isAdmin, signOut } = useAuth(); const { items } = useCart(); + const branding = useBranding(); const location = useLocation(); const navigate = useNavigate(); const [moreOpen, setMoreOpen] = useState(false); @@ -93,13 +95,22 @@ export function AppLayout({ children }: AppLayoutProps) { // Get additional items for "More" menu const moreItems = navItems.filter(item => !mobileNav.some(m => m.href === item.href)); + const brandName = branding.brand_name || 'LearnHub'; + const logoUrl = branding.brand_logo_url; + if (!user) { // Public layout for non-authenticated pages return (
- LearnHub + + {logoUrl ? ( + {brandName} + ) : ( + brandName + )} +