diff --git a/electron/servers/nextjs/app/(presentation-generator)/(dashboard)/dashboard/components/PresentationCard.tsx b/electron/servers/nextjs/app/(presentation-generator)/(dashboard)/dashboard/components/PresentationCard.tsx index 24e1d9d1..3da715e3 100644 --- a/electron/servers/nextjs/app/(presentation-generator)/(dashboard)/dashboard/components/PresentationCard.tsx +++ b/electron/servers/nextjs/app/(presentation-generator)/(dashboard)/dashboard/components/PresentationCard.tsx @@ -1,5 +1,5 @@ 'use client' -import React from "react"; +import React, { useEffect } from "react"; import { Card } from "@/components/ui/card"; import { DashboardApi } from "@/app/(presentation-generator)/services/api/dashboard"; @@ -12,7 +12,7 @@ import { import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { useFontLoader } from "@/app/(presentation-generator)/hooks/useFontLoader"; +import { useFontLoader } from "@/app/(presentation-generator)/hooks/useFontLoad"; import SlideScale from "@/app/(presentation-generator)/components/PresentationRender"; import MarkdownRenderer from "@/components/MarkDownRender"; @@ -28,11 +28,52 @@ export const PresentationCard = ({ onDeleted?: (presentationId: string) => void; }) => { const router = useRouter(); - useFontLoader(presentation.fonts || []); + const handlePreview = (e: React.MouseEvent) => { e.preventDefault(); router.push(`/presentation?id=${id}&type=standard`); }; + useEffect(() => { + applyTheme(presentation.theme) + }, []) + const applyTheme = async (theme: any) => { + const element = document.getElementById(`dashboard-presentation-card-${id}`) + if (!element) return; + + if (!theme || !theme.data || !theme.data.colors['graph_0']) { return; } + const cssVariables = { + '--primary-color': theme.data.colors['primary'], + '--background-color': theme.data.colors['background'], + '--card-color': theme.data.colors['card'], + '--stroke': theme.data.colors['stroke'], + '--primary-text': theme.data.colors['primary_text'], + '--background-text': theme.data.colors['background_text'], + '--graph-0': theme.data.colors['graph_0'], + '--graph-1': theme.data.colors['graph_1'], + '--graph-2': theme.data.colors['graph_2'], + '--graph-3': theme.data.colors['graph_3'], + '--graph-4': theme.data.colors['graph_4'], + '--graph-5': theme.data.colors['graph_5'], + '--graph-6': theme.data.colors['graph_6'], + '--graph-7': theme.data.colors['graph_7'], + '--graph-8': theme.data.colors['graph_8'], + '--graph-9': theme.data.colors['graph_9'], + } + Object.entries(cssVariables).forEach(([key, value]) => { + element.style.setProperty(key, value) + }) + // + if (theme.data.fonts.textFont.url && theme.data.fonts.textFont.name) { + useFontLoader({ [theme.data.fonts.textFont.name]: theme.data.fonts.textFont.url }) + } + + // Apply fonts to preview container + element.style.setProperty('font-family', `"${theme.data.fonts.textFont.name}"`) + element.style.setProperty('--heading-font-family', `"${theme.data.fonts.textFont.name}"`) + element.style.setProperty('--body-font-family', `"${theme.data.fonts.textFont.name}"`) + + + } const handleDelete = async (e: React.MouseEvent) => { e.preventDefault(); @@ -59,7 +100,9 @@ export const PresentationCard = ({ onClick={handlePreview} className="bg-[#F8FBFB] font-syne shadow-none sm:shadow-none presentation-card rounded-[12px] p-0 group hover:shadow-md transition-all duration-500 slide-theme cursor-pointer overflow-hidden flex flex-col" > -
{presentation.type}
diff --git a/electron/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx b/electron/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx
index 5065d91f..d4db580f 100644
--- a/electron/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx
+++ b/electron/servers/nextjs/app/(presentation-generator)/components/EditableLayoutWrapper.tsx
@@ -12,7 +12,7 @@ interface EditableLayoutWrapperProps {
slideData: any;
isEditMode?: boolean;
properties?: any;
-
+
}
interface EditableElement {
@@ -29,7 +29,7 @@ const EditableLayoutWrapper: React.FC
@@ -496,7 +496,7 @@ const ImageEditor = ({
Slides
+Slides ({presentationData?.slides?.length})