diff --git a/servers/nextjs/app/(presentation-generator)/components/EditableText.tsx b/servers/nextjs/app/(presentation-generator)/components/EditableText.tsx index ae5c2367..b2702807 100644 --- a/servers/nextjs/app/(presentation-generator)/components/EditableText.tsx +++ b/servers/nextjs/app/(presentation-generator)/components/EditableText.tsx @@ -1,12 +1,5 @@ -import { - updateSlideDescription, - updateSlideBodyString, - updateSlideTitle, - updateSlideBodyHeading, - updateSlideBodyDescription, -} from "@/store/slices/presentationGeneration"; -import React, { useCallback, useEffect, useRef, useState } from "react"; -import { useDispatch, useSelector } from "react-redux"; +import React, { useEffect, useRef } from "react"; +import { useSelector } from "react-redux"; import TipTapEditor from "./Tiptap"; import { RootState } from "@/store/store"; import Typewriter from "./TypeWriter"; @@ -14,7 +7,7 @@ import Typewriter from "./TypeWriter"; interface EditableTextProps { slideIndex: number; bodyIdx?: number; - elementId: string; // Format: 'title' | 'body.0.heading' | 'body.0.description' + elementId: string; type: | "title" | "heading" diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniCharts.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniCharts.tsx deleted file mode 100644 index 30dbed91..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniCharts.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { Chart } from '@/store/slices/presentationGeneration'; -import { renderChart } from '../slide_config'; -import { RootState } from '@/store/store'; -import { useSelector } from 'react-redux'; - -const MiniCharts = ({ chartData }: { chartData: Chart }) => { - const { currentColors } = useSelector((state: RootState) => state.theme); - return ( - -
- {renderChart(chartData, true, currentColors)} -
- - ) -} - -export default MiniCharts diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniTypeWriter.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniTypeWriter.tsx deleted file mode 100644 index 7d0b2d5d..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/MiniTypeWriter.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { useTypewriter } from "@/hooks/useTypeWriter"; -import { RootState } from "@/store/store"; -import { useSelector } from "react-redux"; - -const MiniTypeWriter = ({ text }: { text: string }) => { - const { isStreaming } = useSelector( - (state: RootState) => state.presentationGeneration - ); - - // Pass the isStreaming value directly to the hook as the enabled parameter - const { displayText } = useTypewriter(text, 20, isStreaming || false); - - // Since the hook now handles both states, we can simply return displayText - return {displayText}; -}; - -export default MiniTypeWriter; diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type1Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type1Mini.tsx deleted file mode 100644 index 8b0afccb..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type1Mini.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { PresentationGenerationApi } from "../../services/api/presentation-generation"; -import { getStaticFileUrl } from "../../utils/others"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type1MiniProps { - title: string; - description: string; - image: string; -} - -const Type1Mini = ({ title, description, image }: Type1MiniProps) => { - const updatedImage = getStaticFileUrl(image); - return ( -
-
-
-
- -
-
- -
-
-
- {image && ( - {title} - )} -
-
-
- ); -}; - -export default Type1Mini; diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type2Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type2Mini.tsx deleted file mode 100644 index 706e5dee..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type2Mini.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { RootState } from "@/store/store"; -import { useSelector } from "react-redux"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type2MiniProps { - title: string; - body: Array<{ - heading: string; - description: string; - }>; - design_index: number; -} - -const Type2Mini = ({ title, body, design_index }: Type2MiniProps) => { - const isGridLayout = body.length === 4; - const { currentColors } = useSelector((state: RootState) => state.theme); - const getGridCols = (length: number) => { - switch (length) { - case 1: return 'grid-cols-1'; - case 2: return 'grid-cols-2'; - case 3: return 'grid-cols-3'; - case 4: return 'grid-cols-4'; - // Add more cases as needed - default: return 'grid-cols-1'; - } - } - return ( -
-
-
- -
-
- - {design_index === 3 ? ( -
-
-
- {body.map((_, index) => ( -
- {index + 1} -
- ))} -
-
- {body.map((item, index) => ( -
-
- -
-
- -
-
- ))} -
-
- ) : ( -
- {body.map((item, index) => ( -
- {design_index === 2 && ( -
0{index + 1}
- )} -
- -
-
- -
-
- ))} -
- )} -
- ); -}; - -export default Type2Mini; \ No newline at end of file diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type4Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type4Mini.tsx deleted file mode 100644 index 7a70eb69..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type4Mini.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { getStaticFileUrl } from "../../utils/others"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type4MiniProps { - title: string; - body: Array<{ - heading: string; - description: string; - }>; - images: string[]; -} - -const Type4Mini = ({ title, body, images }: Type4MiniProps) => { - const updatedImages = images.map((image) => { - if (image.startsWith("user")) { - return getStaticFileUrl(image); - } - return getStaticFileUrl(image); - }); - const getGridCols = (length: number) => { - switch (length) { - case 1: return 'grid-cols-1'; - case 2: return 'grid-cols-2'; - case 3: return 'grid-cols-3'; - case 4: return 'grid-cols-4'; - // Add more cases as needed - default: return 'grid-cols-1'; - } - } - return ( -
-
-
- -
-
-
- {body.map((item, index) => ( -
-
- {updatedImages && updatedImages[index] && ( - {item.heading} - )} -
-
-
- -
-
- -
-
-
- ))} -
-
- ); -}; - -export default Type4Mini; diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type5Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type5Mini.tsx deleted file mode 100644 index 60ace5f7..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type5Mini.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import MiniCharts from "./MiniCharts"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type5MiniProps { - title: string; - description: string; - chartData: any; - slideIndex: number; - isFullSizeGraph: boolean; -} - -const Type5Mini = ({ title, description, chartData, slideIndex, isFullSizeGraph }: Type5MiniProps) => { - return ( -
-
-
- -
-
-
-
- - -
- {/*
- -
*/} -
- -
-
- {/*
- - - -
{description}
-
*/} -
- ); -}; - -export default Type5Mini; \ No newline at end of file diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type6Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type6Mini.tsx deleted file mode 100644 index 7b2d8606..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type6Mini.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { RootState } from "@/store/store"; -import { useSelector } from "react-redux"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type6MiniProps { - title: string; - description: string; - body: Array<{ - heading: string; - description: string; - }>; -} - -const Type6Mini = ({ title, description, body }: Type6MiniProps) => { - const { currentColors } = useSelector((state: RootState) => state.theme); - return ( -
-
-
-
- -
-
- -
-
-
- {body.map((item, index) => ( -
-
0{index + 1}
-
- -
-
- -
-
- ))} -
-
-
- ); -}; - -export default Type6Mini; \ No newline at end of file diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type7Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type7Mini.tsx deleted file mode 100644 index df17d0af..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type7Mini.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { useSelector } from "react-redux"; -import { PresentationGenerationApi } from "../../services/api/presentation-generation"; -import { RootState } from "@/store/store"; -import MiniTypeWriter from "./MiniTypeWriter"; -import { getStaticFileUrl } from "../../utils/others"; - -interface Type7MiniProps { - title: string; - body: Array<{ - heading: string; - description: string; - }>; - icons: string[]; -} - -const Type7Mini = ({ title, body, icons }: Type7MiniProps) => { - const { currentColors } = useSelector((state: RootState) => state.theme); - const isGridLayout = body.length === 4; - const updatedIcons = icons.map((icon) => { - - return getStaticFileUrl(icon); - }); - - return ( -
-
-
- -
-
-
- {body.map((item, index) => ( -
-
- {updatedIcons && updatedIcons[index] && ( - {item.heading} - )} -
-
- -
-
- -
-
- ))} -
-
- ); -}; - -export default Type7Mini; diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type8Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type8Mini.tsx deleted file mode 100644 index 88812031..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type8Mini.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { useSelector } from "react-redux"; -import { RootState } from "@/store/store"; -import { PresentationGenerationApi } from "../../services/api/presentation-generation"; -import MiniTypeWriter from "./MiniTypeWriter"; -import { getStaticFileUrl } from "../../utils/others"; - -interface Type8MiniProps { - title: string; - description: string; - body: Array<{ - heading: string; - description: string; - }>; - icons: string[]; -} - -const Type8Mini = ({ title, description, body, icons }: Type8MiniProps) => { - const { currentColors } = useSelector((state: RootState) => state.theme); - const updatedIcons = icons.map((icon) => { - return getStaticFileUrl(icon); - }); - - return ( -
-
-
-
- -
-
- -
-
-
- {body.map((item, index) => ( -
-
- {updatedIcons && updatedIcons[index] && ( - {item.heading} - )} -
-
-
- -
-
- -
-
-
- ))} -
-
-
- ); -}; - -export default Type8Mini; diff --git a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type9Mini.tsx b/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type9Mini.tsx deleted file mode 100644 index 55375d5a..00000000 --- a/servers/nextjs/app/(presentation-generator)/components/mini-slides/Type9Mini.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { useSelector } from "react-redux"; -import MiniCharts from "./MiniCharts"; -import { RootState } from "@/store/store"; -import MiniTypeWriter from "./MiniTypeWriter"; - -interface Type9MiniProps { - title: string; - body: Array<{ - heading: string; - description: string; - }>; - chartData: any; - slideIndex: number; -} - -const Type9Mini = ({ title, body, chartData, slideIndex }: Type9MiniProps) => { - const { currentColors } = useSelector((state: RootState) => state.theme); - return ( -
-
-
-
- -
- -
-
- {body && body.length > 0 && body.map((item, index) => ( -
-
0{index + 1}
-
- -
-
- -
-
- ))} -
-
-
- ); -}; - -export default Type9Mini; \ No newline at end of file diff --git a/servers/nextjs/app/(presentation-generator)/components/slide_config.tsx b/servers/nextjs/app/(presentation-generator)/components/slide_config.tsx index 5798ccb3..bdcb0c9d 100644 --- a/servers/nextjs/app/(presentation-generator)/components/slide_config.tsx +++ b/servers/nextjs/app/(presentation-generator)/components/slide_config.tsx @@ -1,7 +1,5 @@ import { Slide } from "../types/slide"; -import Type1Mini from "./mini-slides/Type1Mini"; -import Type4Mini from "./mini-slides/Type4Mini"; -import Type2Mini from "./mini-slides/Type2Mini"; + import Type1Layout from "./slide_layouts/Type1Layout"; import Type2Layout from "./slide_layouts/Type2Layout"; import Type4Layout from "./slide_layouts/Type4Layout"; @@ -10,11 +8,7 @@ import Type6Layout from "./slide_layouts/Type6Layout"; import Type7Layout from "./slide_layouts/Type7Layout"; import Type8Layout from "./slide_layouts/Type8Layout"; import Type9Layout from "./slide_layouts/Type9Layout"; -import Type7Mini from "./mini-slides/Type7Mini"; -import Type6Mini from "./mini-slides/Type6Mini"; -import Type5Mini from "./mini-slides/Type5Mini"; -import Type9Mini from "./mini-slides/Type9Mini"; -import Type8Mini from "./mini-slides/Type8Mini"; + import { Chart, ChartSettings } from "@/store/slices/presentationGeneration"; @@ -154,91 +148,7 @@ export const renderSlideContent = (slide: Slide, language: string) => { } }; -export const renderMiniSlideContent = (slide: Slide) => { - const { type, content } = slide; - switch (type) { - case 1: - return ( - - ); - case 2: - return ( - - ); - case 4: - return ( - - ); - case 5: - const isFullSizeGraph = - slide.content.graph?.data.categories.length > 4 && - slide.content.graph.type !== "pie"; - return ( - - ); - case 6: - return ( - - ); - case 7: - return ( - - ); - case 8: - return ( - - ); - case 9: - return ( - - ); - - default: - return null; - } -}; // CHART RENDERING export const renderChart = ( diff --git a/servers/nextjs/app/(presentation-generator)/presentation/[id]/loading.tsx b/servers/nextjs/app/(presentation-generator)/presentation/[id]/loading.tsx deleted file mode 100644 index 33989b55..00000000 --- a/servers/nextjs/app/(presentation-generator)/presentation/[id]/loading.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { Skeleton } from '@/components/ui/skeleton' -const loading = () => { - return ( -
- -
- { - Array.from({ length: 10 }).map((_, index) => ( - - )) - } -
-
- ) -} - -export default loading diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx index dd33bf83..387f1ada 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx @@ -47,7 +47,7 @@ import Modal from "./Modal"; import Announcement from "@/components/Announcement"; import { getFontLink, getStaticFileUrl } from "../../utils/others"; -import path from "path"; + const Header = ({ presentation_id, @@ -132,7 +132,7 @@ const Header = ({ const metadata = await (await fetch('/api/slide-metadata', { method: 'POST', body: JSON.stringify({ - url: 'http://localhost/presentation?id=' + presentation_id, + url: 'http://localhost/pdf-maker?id=' + presentation_id, theme: currentTheme, customColors: currentColors, }) diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/SidePanel.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/SidePanel.tsx index cddd299b..ffc68aba 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/components/SidePanel.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/components/SidePanel.tsx @@ -24,7 +24,7 @@ import * as htmlToImage from "html-to-image"; import { setPresentationData } from "@/store/slices/presentationGeneration"; import { SortableSlide } from "./SortableSlide"; import { SortableListItem } from "./SortableListItem"; -import { renderMiniSlideContent } from "../../components/slide_config"; +import { renderSlideContent } from "../../components/slide_config"; interface SidePanelProps { selectedSlide: number; @@ -156,18 +156,6 @@ const SidePanel = ({ ) { return null; - //
- //
- //
- //
- //
- // {Array.from({ length: 8 }).map((_, index) => ( - //
- //
- - //
- // ))} - //
} return ( @@ -206,10 +194,9 @@ const SidePanel = ({ fixed xl:relative h-full z-50 xl:z-auto transition-all duration-300 ease-in-out ${isOpen ? "ml-0" : "-ml-[300px]"} - ${ - isMobilePanelOpen - ? "translate-x-0" - : "-translate-x-full xl:translate-x-0" + ${isMobilePanelOpen + ? "translate-x-0" + : "-translate-x-full xl:translate-x-0" } `} > @@ -230,34 +217,30 @@ const SidePanel = ({
@@ -323,8 +306,18 @@ const SidePanel = ({ {isStreaming ? ( presentationData && presentationData?.slides.map((slide, index) => ( -
- {renderMiniSlideContent(slide)} +
onSlideClick(index)} + className={` cursor-pointer ring-2 p-1 rounded-md transition-all duration-200 ${selectedSlide === index ? ' ring-[#5141e5]' : 'ring-gray-200' + }`} + > +
+
+
+ {renderSlideContent(slide, 'English')} +
+
)) ) : ( diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx index 1477e18c..987e2257 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx @@ -116,7 +116,7 @@ const SlideContent = ({ <>
{isStreaming && ( diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/SortableSlide.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/SortableSlide.tsx index 1be86bd3..fc789137 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/components/SortableSlide.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/components/SortableSlide.tsx @@ -1,6 +1,6 @@ import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; -import { renderMiniSlideContent } from '../../components/slide_config'; +import { renderSlideContent } from '../../components/slide_config'; import { Slide } from '../../types/slide'; import { useState } from 'react'; @@ -51,12 +51,15 @@ export function SortableSlide({ slide, index, selectedSlide, onSlideClick }: Sor {...listeners} onMouseDown={handleMouseDown} onMouseUp={handleMouseUp} - className={`flex justify-center items-center cursor-pointer ${selectedSlide === index - ? 'ring-2 ring-[#5141e5]' - : 'hover:ring-2 hover:ring-gray-200' - } rounded-lg`} + className={` cursor-pointer border-[3px] p-1 shadow-lg rounded-md transition-all duration-200 ${selectedSlide === index ? ' border-[#5141e5]' : 'border-color' + }`} > - {renderMiniSlideContent(slide)} +
+
+
+ {renderSlideContent(slide, 'English')} +
+
); } \ No newline at end of file diff --git a/servers/nextjs/app/(presentation-generator)/presentation/page.tsx b/servers/nextjs/app/(presentation-generator)/presentation/page.tsx index d68b2cd0..0ccb7c51 100644 --- a/servers/nextjs/app/(presentation-generator)/presentation/page.tsx +++ b/servers/nextjs/app/(presentation-generator)/presentation/page.tsx @@ -19,9 +19,9 @@ const page = () => { ); } return ( - - - + + + ); }; export default page; diff --git a/servers/nextjs/app/(presentation-generator)/styles/themes.css b/servers/nextjs/app/(presentation-generator)/styles/themes.css index be47c697..0063ee06 100644 --- a/servers/nextjs/app/(presentation-generator)/styles/themes.css +++ b/servers/nextjs/app/(presentation-generator)/styles/themes.css @@ -99,6 +99,9 @@ transition: background-color 0.3s ease, color 0.3s ease; } +.slide-theme .border-color{ + border-color: var(--slide-box); +} @keyframes progress { diff --git a/servers/nextjs/app/dashboard/components/PresentationCard.tsx b/servers/nextjs/app/dashboard/components/PresentationCard.tsx index bb4c73a4..4e0b815f 100644 --- a/servers/nextjs/app/dashboard/components/PresentationCard.tsx +++ b/servers/nextjs/app/dashboard/components/PresentationCard.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Card } from "@/components/ui/card"; -import { DashboardApi, PresentationResponse } from "../api/dashboard"; +import { DashboardApi } from "../api/dashboard"; import { DotsVerticalIcon, TrashIcon } from "@radix-ui/react-icons"; import { Popover, @@ -10,21 +10,25 @@ import { } from "@/components/ui/popover"; import { useRouter } from "next/navigation"; import { toast } from "@/hooks/use-toast"; -import { PresentationGenerationApi } from "@/app/(presentation-generator)/services/api/presentation-generation"; -import { getStaticFileUrl } from "@/app/(presentation-generator)/utils/others"; +import { renderSlideContent } from "@/app/(presentation-generator)/components/slide_config"; export const PresentationCard = ({ id, title, created_at, thumbnail, - type, -}: PresentationResponse & { type: "video" | "slide" }) => { + theme, +}: { + id: string; + title: string; + created_at: string; + thumbnail: string; + theme: any; +}) => { const router = useRouter(); const handlePreview = (e: React.MouseEvent) => { e.preventDefault(); - router.push(`/presentation?id=${id}`); }; @@ -38,7 +42,7 @@ export const PresentationCard = ({ variant: "default", }); const response = await DashboardApi.deletePresentation(id); - console.log(response); + if (response) { toast({ title: "Presentation deleted", @@ -55,10 +59,25 @@ export const PresentationCard = ({ window.location.reload(); }; + const themeName = theme.name; + // Create CSS variables object + const cssVariables = { + '--slide-bg': theme.colors.slideBg, + '--slide-title': theme.colors.slideTitle, + '--slide-heading': theme.colors.slideHeading, + '--slide-description': theme.colors.slideDescription, + '--slide-box': theme.colors.slideBox, + '--icon-bg': theme.colors.iconBg, + '--background': theme.colors.background, + '--font-family': theme.colors.fontFamily, + } as React.CSSProperties; + return (
{/* Date */} @@ -83,7 +102,7 @@ export const PresentationCard = ({
{/* Thumbnail */} -
+ {/*
{thumbnail ? (
)} +
*/} +
+
+
+ {renderSlideContent({ + id: 'mock-slide-1', + type: 1, + index: 0, + design_index: 1, + properties: null, + images: ['/static/user_data/ee7cb066-86d0-45fc-adc9-15bf565eab30/images/af54ed41-483e-4983-aef0-b254aac48408.jpg'], + icons: [], + graph_id: null, + presentation: id, + content: { + title: title || 'Sample Presentation', + body: "This is a sample slide description to demonstrate the layout and styling. The content here helps visualize how actual presentation content would appear.", + infographics: [], + image_prompts: ['Sample image showing business growth'] + }, + }, 'English')} +
{/* Icon and Title */}
- {type === "video" ? ( - - - - - - - - ) : ( - - - - )} - + + +

{title}

diff --git a/servers/nextjs/app/dashboard/components/PresentationGrid.tsx b/servers/nextjs/app/dashboard/components/PresentationGrid.tsx index b6ab0abb..205ab709 100644 --- a/servers/nextjs/app/dashboard/components/PresentationGrid.tsx +++ b/servers/nextjs/app/dashboard/components/PresentationGrid.tsx @@ -102,7 +102,8 @@ export const PresentationGrid = ({ ))}
diff --git a/servers/nextjs/app/layout.tsx b/servers/nextjs/app/layout.tsx index d9fbcd08..783bf2b9 100644 --- a/servers/nextjs/app/layout.tsx +++ b/servers/nextjs/app/layout.tsx @@ -4,6 +4,7 @@ import { Fraunces, Montserrat, Inria_Serif, Roboto, Instrument_Sans } from "next import "./globals.css"; import { Providers } from "./providers"; import { Toaster } from "@/components/ui/toaster"; +import { FooterProvider } from "./(presentation-generator)/context/footerContext"; const fraunces = Fraunces({ subsets: ["latin"], @@ -100,7 +101,12 @@ export default function RootLayout({ - {children} + + + + {children} + +