diff --git a/components/canvas/LiblibVideoCanvasReplica.tsx b/components/canvas/LiblibVideoCanvasReplica.tsx index 964c0558f..206a1a972 100644 --- a/components/canvas/LiblibVideoCanvasReplica.tsx +++ b/components/canvas/LiblibVideoCanvasReplica.tsx @@ -24,6 +24,7 @@ import { Upload, UserRound, Video, + Wand2, X, type LucideIcon, } from "lucide-react"; @@ -42,8 +43,9 @@ import { useState, } from "react"; import { toast } from "sonner"; +import useSWR from "swr"; import capturedCanvasModules from "@/artifacts/liblib-frontend-capture-ed9a2c12570a49b9a1186017b2c38b52/canvas-modules.json"; -import { cn } from "@/lib/utils"; +import { cn, fetcher } from "@/lib/utils"; import { canvasService } from "@/services/canvas"; type ActivePanel = @@ -230,6 +232,12 @@ type LiblibVideoCanvasReplicaProps = { isLoading?: boolean; }; +type SiteBrandSettings = { + siteName?: string | null; + siteLogo?: string | null; + siteLogoDark?: string | null; +}; + const capturedTools = ((capturedCanvasModules as any).tools || []) as CapturedTool[]; const capturedCounts = (capturedCanvasModules as any).counts || {}; const capturedWorkflows = ((capturedCanvasModules as any).workflows || []) as WorkflowPreset[]; @@ -1355,6 +1363,7 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib const router = useRouter(); const canvasRef = useRef(null); const dragRef = useRef(null); + const { data: siteBrandSettings } = useSWR("/api/site-settings", fetcher); const [nodes, setNodes] = useState([]); const [edges, setEdges] = useState([]); const [selectedNodeId, setSelectedNodeId] = useState(null); @@ -2524,6 +2533,9 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib onStartTitleEdit={() => setIsTitleEditing(true)} projectTitle={projectTitle} routerBack={() => router.push("/")} + siteLogo={siteBrandSettings?.siteLogo} + siteLogoDark={siteBrandSettings?.siteLogoDark} + siteName={siteBrandSettings?.siteName} /> void; projectTitle: string; routerBack: () => void; + siteLogo?: string | null; + siteLogoDark?: string | null; + siteName?: string | null; }) { return (
@@ -2718,7 +2736,7 @@ function TopBar({ onClick={routerBack} type="button" > - +
{isTitleEditing ? ( @@ -2895,13 +2913,39 @@ function ZoomDock({ ); } -function LibTVLogo() { +function StylizedBrandLogo({ + siteLogo, + siteLogoDark, + siteName, +}: { + siteLogo?: string | null; + siteLogoDark?: string | null; + siteName?: string | null; +}) { + const resolvedSiteName = String(siteName || "AI Chatbot").trim() || "AI Chatbot"; + const displayLogo = siteLogoDark?.trim() || siteLogo?.trim() || ""; + const shouldInvertLogo = !siteLogoDark?.trim() && Boolean(siteLogo?.trim()); + return ( - + + {displayLogo ? ( + {resolvedSiteName} + ) : ( + + + + )} + + {resolvedSiteName} + + ); }