From c6dd1887531ac7ae0a1982ba810761449683f2cf Mon Sep 17 00:00:00 2001 From: Suraj Jha Date: Thu, 9 Apr 2026 17:30:21 +0545 Subject: [PATCH] refactor: better 'Code' template schema and description --- .../Code/CodeSlide01RoadmapCover.tsx | 16 +++++----- .../Code/CodeSlide02CodeExplanationSplit.tsx | 28 +++++++++------- .../Code/CodeSlide03ApiRequestResponse.tsx | 6 ++-- .../Code/CodeSlide04FeatureGrid.tsx | 16 +++++----- .../Code/CodeSlide05ComparisonTable.tsx | 10 +++--- .../Code/CodeSlide06Workflow.tsx | 12 +++---- .../Code/CodeSlide07UseCaseList.tsx | 12 +++---- .../Code/CodeSlide08CodeExplanationText.tsx | 16 +++++----- .../Code/CodeSlide09TableOfContent.tsx | 26 +++++++-------- .../Code/CodeSlide10MetricsSplit.tsx | 28 ++++++++-------- .../Code/CodeSlide11MetricsGrid.tsx | 32 +++++++++---------- 11 files changed, 105 insertions(+), 97 deletions(-) diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide01RoadmapCover.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide01RoadmapCover.tsx index 4e100bca..36de395f 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide01RoadmapCover.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide01RoadmapCover.tsx @@ -1,16 +1,16 @@ import * as z from "zod"; -export const slideLayoutId = "code-roadmap-cover-slide"; -export const slideLayoutName = "Code Roadmap Cover Slide"; +export const slideLayoutId = "cover-slide"; +export const slideLayoutName = "Cover Slide"; export const slideLayoutDescription = - "A centered opening slide with company name, roadmap title, and supporting subtitle."; + "Opening/cover/intro slide with organization/institution/presenter, presentation title/heading , and supporting subtitle."; export const Schema = z.object({ - companyName: z.string().min(2).max(18).default("COMPANY NAME").meta({ - description: "Organization name shown above the slide title.", + companyName: z.string().min(2).max(18).optional().default("COMPANY NAME").meta({ + description: "Optional organization/institution/presenter name shown above the slide title.", }), title: z.string().min(8).max(28).default("Development Roadmap").meta({ - description: "Primary slide heading.", + description: "Title/heading of the slide.", }), subtitle: z .string() @@ -22,8 +22,8 @@ export const Schema = z.object({ .meta({ description: "Supporting subtitle shown under the heading.", }), - pageLabel: z.string().min(3).max(8).default("1 / 11").meta({ - description: "Bottom pagination label.", + pageLabel: z.string().min(3).max(8).optional().default("1 / 11").meta({ + description: "", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide02CodeExplanationSplit.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide02CodeExplanationSplit.tsx index cef31779..9daa5dac 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide02CodeExplanationSplit.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide02CodeExplanationSplit.tsx @@ -4,16 +4,22 @@ import * as z from "zod"; export const slideLayoutId = "code-explanation-split-slide"; export const slideLayoutName = "Code Explanation Split Slide"; export const slideLayoutDescription = - "A two-column slide with a code panel on the left and descriptive explanation on the right."; + "A two-column slide with a code panel on the left and description on the right."; export const Schema = z.object({ title: z.string().min(8).max(24).default("Code + Explanation").meta({ description: "Slide heading shown at the top-left.", }), codeSnippet: z.object({ - language: z.string().min(2).max(10), - fileName: z.string().min(3).max(30), - content: z.string().min(20).max(520), + language: z.string().min(2).max(10).meta({ + description: "Programming language of the snippet", + }), + fileName: z.string().min(3).max(30).meta({ + description: "File name label shown above the code snippet.", + }), + content: z.string().min(20).max(520).meta({ + description: "The actual code content to be displayed.", + }), }).default({ language: "tsx", fileName: "components/UserAuth.tsx", @@ -37,10 +43,10 @@ export function UserAuth() { }).meta({ description: "Code sample shown in the left panel.", }), - explanationTitle: z.string().min(4).max(20).default("Explanation").meta({ - description: "Heading shown above the explanatory paragraph.", + descriptionTitle: z.string().min(4).max(20).default("Description").meta({ + description: "Heading shown above the paragraph.", }), - explanation: z + description: z .string() .min(40) .max(360) @@ -48,9 +54,9 @@ export function UserAuth() { "This component manages credentials as local state and submits them through an async handler. The login utility abstracts network details while the handler keeps the UI flow predictable. Keep validation and side effects isolated so changes remain safe when authentication requirements evolve. " ) .meta({ - description: "Explanation paragraph shown in the right column.", + description: "Description paragraph shown in the right column.", }), - pageLabel: z.string().min(3).max(8).default("2 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("2 / 11").meta({ description: "Bottom pagination label.", }), }); @@ -104,9 +110,9 @@ const CodeSlide02CodeExplanationSplit = ({
-

{data.explanationTitle}

+

{data.descriptionTitle}

- {data.explanation} + {data.description}

diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide03ApiRequestResponse.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide03ApiRequestResponse.tsx index 784b30a7..e48ebf57 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide03ApiRequestResponse.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide03ApiRequestResponse.tsx @@ -1,8 +1,8 @@ import * as z from "zod"; -export const slideLayoutId = "code-api-request-response-slide"; -export const slideLayoutName = "Code API Request Response Slide"; +export const slideLayoutId = "api-request-response-slide"; +export const slideLayoutName = "API Request Response Slide"; export const slideLayoutDescription = "An API-focused slide with endpoint metadata, request payload, and response payload."; @@ -59,7 +59,7 @@ export const Schema = z.object({ }).meta({ description: "Response payload example.", }), - pageLabel: z.string().min(3).max(8).default("3 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("3 / 11").meta({ description: "Bottom pagination label.", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide04FeatureGrid.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide04FeatureGrid.tsx index 6416862c..8a87b8a7 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide04FeatureGrid.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide04FeatureGrid.tsx @@ -2,10 +2,10 @@ import * as z from "zod"; const FeatureCardSchema = z.object({ title: z.string().min(3).max(17).meta({ - description: "Feature title shown on each card.", + description: "Title shown on each card.", }), description: z.string().min(18).max(80).meta({ - description: "Supporting feature description.", + description: "Description shown on each card.", }), icon: z.object({ __icon_url__: z.string().meta({ @@ -18,14 +18,14 @@ const FeatureCardSchema = z.object({ __icon_url__: "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", __icon_query__: "check icon", }).meta({ - description: "Icon used for each feature bullet in plan cards.", + description: "Suiting icon used for each bullet in plan cards.", }), }); -export const slideLayoutId = "code-feature-grid-slide"; -export const slideLayoutName = "Code Feature Grid Slide"; +export const slideLayoutId = "cards-grid-slide"; +export const slideLayoutName = "Cards Grid Slide"; export const slideLayoutDescription = - "A six-card feature summary grid with icon badges and compact descriptions."; + "A list of cards in grid with title, icon and compact description in each."; export const Schema = z.object({ title: z.string().min(6).max(20).default("Feature Grid").meta({ @@ -33,7 +33,7 @@ export const Schema = z.object({ }), features: z .array(FeatureCardSchema) - .min(3) + .min(1) .max(6) .default([ { @@ -88,7 +88,7 @@ export const Schema = z.object({ .meta({ description: "Six feature cards displayed in a 3x2 grid.", }), - pageLabel: z.string().min(3).max(8).default("4 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("4 / 11").meta({ description: "Bottom pagination label.", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide05ComparisonTable.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide05ComparisonTable.tsx index 587c2615..1f55acec 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide05ComparisonTable.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide05ComparisonTable.tsx @@ -15,10 +15,10 @@ const ComparisonRowSchema = z.object({ }), }); -export const slideLayoutId = "code-comparison-table-slide"; -export const slideLayoutName = "Code Comparison Table Slide"; +export const slideLayoutId = "table-slide"; +export const slideLayoutName = "Table Slide"; export const slideLayoutDescription = - "A framework comparison table with feature rows and highlighted compatibility marks."; + "A slide with title and a table."; export const Schema = z.object({ title: z.string().min(6).max(18).default("Comparison").meta({ @@ -29,7 +29,7 @@ export const Schema = z.object({ }).default(["Feature", "Column 1", "Column 2", "Column 3"]), rows: z .array(ComparisonRowSchema) - .min(6) + .min(1) .max(6) .default([ { feature: "Component-based", column1: "check", column2: "check", column3: "check" }, @@ -42,7 +42,7 @@ export const Schema = z.object({ .meta({ description: "Six comparison rows shown in the table.", }), - pageLabel: z.string().min(3).max(8).default("5 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("5 / 11").meta({ description: "Bottom pagination label.", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide06Workflow.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide06Workflow.tsx index 765de291..d64d4071 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide06Workflow.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide06Workflow.tsx @@ -21,10 +21,10 @@ const WorkflowStepSchema = z.object({ }), }); -export const slideLayoutId = "code-workflow-slide"; -export const slideLayoutName = "Code Workflow Slide"; +export const slideLayoutId = "workflow-slide"; +export const slideLayoutName = "Workflow Slide"; export const slideLayoutDescription = - "A four-step workflow slide with cards and directional arrows between steps."; + "A workflow slide with cards and directional arrows between steps."; export const Schema = z.object({ title: z.string().min(6).max(16).default("Workflow").meta({ @@ -32,7 +32,7 @@ export const Schema = z.object({ }), steps: z .array(WorkflowStepSchema) - .min(4) + .min(1) .max(4) .default([ { @@ -69,9 +69,9 @@ export const Schema = z.object({ }, ]) .meta({ - description: "Four workflow steps shown in sequence.", + description: "Workflow steps shown in sequence.", }), - pageLabel: z.string().min(3).max(8).default("6 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("6 / 11").meta({ description: "Bottom pagination label.", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide07UseCaseList.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide07UseCaseList.tsx index 5defbc5d..d08f432f 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide07UseCaseList.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide07UseCaseList.tsx @@ -1,17 +1,17 @@ import * as z from "zod"; -export const slideLayoutId = "code-use-case-list-slide"; -export const slideLayoutName = "Code Use Case List Slide"; +export const slideLayoutId = "bullet-list-slide"; +export const slideLayoutName = "Two Column Bullet List Slide"; export const slideLayoutDescription = - "A two-column numbered use-case list with eight compact items."; + "A two-column numbered string list with items."; export const Schema = z.object({ title: z.string().min(6).max(30).default("Usecase").meta({ description: "Slide title shown above the numbered list.", }), items: z - .array(z.string().min(4).max(8)) - .min(4) + .array(z.string().min(1).max(200)) + .min(1) .max(8) .default([ "Use pre-built component library for UI consistency", @@ -26,7 +26,7 @@ export const Schema = z.object({ .meta({ description: "Eight use-case items shown in two columns.", }), - pageLabel: z.string().min(3).max(8).default("7 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("7 / 11").meta({ description: "Bottom pagination label.", }), }); diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide08CodeExplanationText.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide08CodeExplanationText.tsx index b4e3831c..0211fa9c 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide08CodeExplanationText.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide08CodeExplanationText.tsx @@ -1,18 +1,18 @@ import * as z from "zod"; -export const slideLayoutId = "code-explanation-text-slide"; -export const slideLayoutName = "Code Explanation Text Slide"; +export const slideLayoutId = "description-text-slide"; +export const slideLayoutName = "Description Text Slide"; export const slideLayoutDescription = - "A text-only explanation slide with generous whitespace for narrative documentation."; + "A text-only description slide tihe title/heading."; export const Schema = z.object({ title: z.string().min(8).max(30).default("Code + Explanation").meta({ description: "Main slide title shown at the top-left.", }), - explanationTitle: z.string().min(4).max(20).default("Explanation").meta({ + descriptionTitle: z.string().min(4).max(20).default("Explanation").meta({ description: "Subheading above the paragraph body.", }), - explanation: z + description: z .string() .max(360) @@ -22,7 +22,7 @@ export const Schema = z.object({ .meta({ description: "Long-form explanation body.", }), - pageLabel: z.string().min(3).max(8).default("8 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("8 / 11").meta({ description: "Bottom pagination label.", }), }); @@ -45,8 +45,8 @@ const CodeSlide08CodeExplanationText = ({ data }: { data: Partial })

{data.title}

-

{data.explanationTitle}

-

{data.explanation}

+

{data.descriptionTitle}

+

{data.description}

}) => { >

{metric.value}

{metric.label}

-

{metric.period}

+

{metric.subtext}

))} diff --git a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide11MetricsGrid.tsx b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide11MetricsGrid.tsx index ecce205a..3a2f9f51 100644 --- a/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide11MetricsGrid.tsx +++ b/electron/servers/nextjs/app/presentation-templates/Code/CodeSlide11MetricsGrid.tsx @@ -4,18 +4,18 @@ const MetricSchema = z.object({ value: z.string().min(2).max(6).meta({ description: "Primary metric value.", }), - label: z.string().min(3).max(14).meta({ + label: z.string().min(3).max(15).meta({ description: "Metric label text.", }), - period: z.string().min(3).max(16).meta({ - description: "Metric period text.", + subtext: z.string().min(3).max(30).meta({ + description: "Metric subtext/description.", }), }); -export const slideLayoutId = "code-metrics-grid-slide"; -export const slideLayoutName = "Code Metrics Grid Slide"; +export const slideLayoutId = "metrics-grid-slide"; +export const slideLayoutName = "Metrics Grid Slide"; export const slideLayoutDescription = - "A six-card metrics grid for KPI overviews in code-focused decks."; + "A slide with metrics card grid and title at the top."; export const Schema = z.object({ title: z.string().min(6).max(18).default("Metrics").meta({ @@ -23,20 +23,20 @@ export const Schema = z.object({ }), metrics: z .array(MetricSchema) - .min(3) + .min(1) .max(6) .default([ - { value: "99.9%", label: "Uptime", period: "Last 12 months" }, - { value: "<100ms", label: "Response Time", period: "Last 12 months" }, - { value: "50k+", label: "Active Users", period: "Last 12 months" }, - { value: "99.9%", label: "Uptime", period: "Last 12 months" }, - { value: "<100ms", label: "Response Time", period: "Last 12 months" }, - { value: "50k+", label: "Active Users", period: "Last 12 months" }, + { value: "99.9%", label: "Uptime", subtext: "Last 12 months" }, + { value: "<100ms", label: "Response Time", subtext: "Last 12 months" }, + { value: "50k+", label: "Active Users", subtext: "Last 12 months" }, + { value: "99.9%", label: "Uptime", subtext: "Last 12 months" }, + { value: "<100ms", label: "Response Time", subtext: "Last 12 months" }, + { value: "50k+", label: "Active Users", subtext: "Last 12 months" }, ]) .meta({ - description: "Six KPI cards in a 3x2 grid.", + description: "Metrics cards in a grid.", }), - pageLabel: z.string().min(3).max(8).default("11 / 11").meta({ + pageLabel: z.string().min(3).max(8).optional().default("11 / 11").meta({ description: "Bottom pagination label.", }), }); @@ -74,7 +74,7 @@ const CodeSlide11MetricsGrid = ({ data }: { data: Partial }) => { >

{metric.value}

{metric.label}

-

{metric.period}

+

{metric.subtext}

))}