From 4ecab24add50feffd484097d39a9736000c22dcf Mon Sep 17 00:00:00 2001 From: shiva raj badu Date: Thu, 9 Apr 2026 22:54:41 +0545 Subject: [PATCH] feat: new template improvement --- .../Education/EducationCoverSlide.tsx | 8 ++-- .../BusinessChallengesCardsSlide.tsx | 2 +- .../BusinessChallengesGridSlide.tsx | 6 +-- .../ProductOverview/ComparisonChartSlide.tsx | 47 ++++++++++--------- .../ComparisonTableWithTextSlide.tsx | 2 +- .../ProductOverview/CoverSlide.tsx | 5 +- .../ProductOverview/ImageGallerySlide.tsx | 2 +- .../ProductOverview/KpiCardsSlide.tsx | 2 +- .../MarketOpportunitySlide.tsx | 2 +- .../ProductOverview/MeetTeamSlide.tsx | 6 +-- .../ProductOverview/MissionVisionSlide.tsx | 2 +- .../ProductOverview/OurServicesSlide.tsx | 2 +- .../ProductOverview/PricingPlanSlide.tsx | 6 +-- .../ProductOverview/ProcessSlide.tsx | 9 ++-- .../ProductOverview/TableOfContentSlide.tsx | 2 +- 15 files changed, 53 insertions(+), 50 deletions(-) diff --git a/electron/servers/nextjs/app/presentation-templates/Education/EducationCoverSlide.tsx b/electron/servers/nextjs/app/presentation-templates/Education/EducationCoverSlide.tsx index d8a1fa2a..f1bdcc1f 100644 --- a/electron/servers/nextjs/app/presentation-templates/Education/EducationCoverSlide.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Education/EducationCoverSlide.tsx @@ -4,11 +4,11 @@ import * as z from "zod"; export const slideLayoutId = "cover-slide"; export const slideLayoutName = "Cover Slide"; export const slideLayoutDescription = - "A full-bleed cover slide with a single background image, a strong violet overlay, and centered company/instructor/presenter/institute name and title text."; + "Opening/cover/intro slide with organization/institution/presenter, presentation title/heading , and supporting subtitle."; export const Schema = z.object({ - name: z.string().min(3).max(16).optional().default("COMPANY NAME").meta({ - description: "Company/instructor/presenter/institute name label shown above the main title.", + name: z.string().min(3).max(16).optional().default("Name").meta({ + description: "Optional organization/institution/presenter name shown above the slide title.", }), title: z.string().min(6).max(32).default("PowerPoint Template").meta({ description: "Main centered title of the cover slide.", @@ -57,7 +57,7 @@ const EducationCoverSlide = ({ data }: { data: Partial }) => { className="relative z-10 flex h-full flex-col items-center justify-center text-center" style={{ color: "var(--primary-text,#ffffff)" }} > - {name &&

{name}

+ {name &&

{name}

}

{title}

diff --git a/electron/servers/nextjs/app/presentation-templates/ProductOverview/BusinessChallengesCardsSlide.tsx b/electron/servers/nextjs/app/presentation-templates/ProductOverview/BusinessChallengesCardsSlide.tsx index f0e05180..39726418 100644 --- a/electron/servers/nextjs/app/presentation-templates/ProductOverview/BusinessChallengesCardsSlide.tsx +++ b/electron/servers/nextjs/app/presentation-templates/ProductOverview/BusinessChallengesCardsSlide.tsx @@ -82,7 +82,7 @@ const BusinessChallengesCardsSlide = ({ data }: { data: Partial }) = fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) =>

{blocks?.map((block, index) => ( diff --git a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ComparisonChartSlide.tsx b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ComparisonChartSlide.tsx index aad81772..514c1e58 100644 --- a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ComparisonChartSlide.tsx +++ b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ComparisonChartSlide.tsx @@ -4,7 +4,7 @@ import * as z from "zod"; export const slideLayoutId = "title-description-with-table-slide"; export const slideLayoutName = "Title Description with Table Slide"; export const slideLayoutDescription = - "A slide with a title on top and a description below, and a content section containing a table with column headers and rows of text content."; + "A slide with a title on top and a description below, and a content section containing a table with column headers and rows of check, cross and empty state of content."; const CellStatusSchema = z.enum(["check", "cross", "empty"]); @@ -29,21 +29,7 @@ const LegacyRowSchema = z.object({ const RowSchema = z.union([GeneralRowSchema, LegacyRowSchema]); -const DEFAULT_COLUMNS = ["HEADING 1", "HEADING 2", "HEADING 3", "HEADING 4"]; -const DEFAULT_ROWS: z.infer[] = [ - { - label: "HEADING 1", - cells: ["check", "cross", "check", "cross"], - }, - { - label: "HEADING 1", - cells: ["check", "empty", "check", "empty"], - }, - { - label: "HEADING 2", - cells: ["check", "check", "check", "check"], - }, -]; + export const Schema = z.object({ title: z.string().max(14).default("Comparison Chart").meta({ @@ -58,7 +44,7 @@ export const Schema = z.object({ .array(z.string().max(18)) .min(1) .max(4) - .default(DEFAULT_COLUMNS) + .default(["HEADING 1", "HEADING 2", "HEADING 3", "HEADING 4"]) .meta({ description: "Table column headings.", }), @@ -69,7 +55,20 @@ export const Schema = z.object({ .array(RowSchema) .min(1) .max(3) - .default(DEFAULT_ROWS) + .default([ + { + label: "HEADING 1", + cells: ["check", "cross", "check", "cross"], + }, + { + label: "HEADING 1", + cells: ["check", "empty", "check", "empty"], + }, + { + label: "HEADING 2", + cells: ["check", "check", "check", "check"], + }, + ]) .meta({ description: "Table rows with status indicators. Prefer the `cells` array format.", }), @@ -105,7 +104,7 @@ function StatusIcon({ crossIconUrl, crossIconAlt, }: { - status: "check" | "cross" | "empty"; + status: any; checkIconUrl: string | undefined; checkIconAlt: string | undefined; crossIconUrl: string | undefined; @@ -118,8 +117,12 @@ function StatusIcon({ if (status === "cross") { return {crossIconAlt}; } + if (status === 'check') { - return {checkIconAlt}; + + return {checkIconAlt}; + } + return

{status}

} const ComparisonChartSlide = ({ data }: { data: Partial }) => { @@ -168,7 +171,7 @@ const ComparisonChartSlide = ({ data }: { data: Partial }) => { fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => { {row.cells.map((status, cellIndex) => (
}) = fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => {

- {data.titleLine1} -
- {data.titleLine2} +

{data.titleLine1}

+

{data.titleLine2}

diff --git a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ImageGallerySlide.tsx b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ImageGallerySlide.tsx index cf5c27a0..b14d590f 100644 --- a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ImageGallerySlide.tsx +++ b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ImageGallerySlide.tsx @@ -88,7 +88,7 @@ const ImageGallerySlide = ({ data }: { data: Partial }) => { <>
}) => { }} /> -
+

}) => { fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => { fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => {

-
+
{members?.map((member, index) => (
}) => { className="h-[244px] w-full object-cover" />
}) => { }} >
-
+

}) => { fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => { <>
-
+

}) => {

-
+
{plans?.map((plan, index) => { const active = plan.highlighted; return ( diff --git a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ProcessSlide.tsx b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ProcessSlide.tsx index 275a6147..f8b848a1 100644 --- a/electron/servers/nextjs/app/presentation-templates/ProductOverview/ProcessSlide.tsx +++ b/electron/servers/nextjs/app/presentation-templates/ProductOverview/ProcessSlide.tsx @@ -88,7 +88,7 @@ const ProcessSlide = ({ data }: { data: Partial }) => { fontFamily: "var(--body-font-family,'Bricolage Grotesque')", }} > -
+

}) => {

-
+

}) => { return (

-
+

}) => { }} >

-
+
3 ? 'space-y-[28px]' : 'space-y-[40px]'}`}> {sections?.map((section, index) => (