import React from 'react' import * as z from "zod"; export const layoutId = 'table-of-contents-slide' export const layoutName = 'Table of Contents' export const layoutDescription = 'A professional table of contents layout with numbered sections, and page references. This should be right after introduction slide if ever used.' const tableOfContentsSlideSchema = z.object({ sections: z.array(z.object({ number: z.number().min(1).meta({ description: "Section number" }), title: z.string().min(1).max(80).meta({ description: "Section title" }), pageNumber: z.string().min(1).max(10).meta({ description: "Page number for this section" }) })).default([ { number: 1, title: "Problem", pageNumber: "03" }, { number: 2, title: "Solution", pageNumber: "04" }, { number: 3, title: "Product Overview", pageNumber: "05" }, { number: 4, title: "Market Size", pageNumber: "06" }, { number: 5, title: "Market Validation", pageNumber: "07" }, { number: 6, title: "Company Traction", pageNumber: "08" }, { number: 7, title: "Product Performance", pageNumber: "09" }, { number: 8, title: "Business Model", pageNumber: "10" }, { number: 9, title: "Competitive Advantage", pageNumber: "11" }, { number: 10, title: "Team Member", pageNumber: "12" } ]).meta({ description: "List of table of contents sections", }) }) export const Schema = tableOfContentsSlideSchema export type TableOfContentsSlideData = z.infer interface TableOfContentsSlideLayoutProps { data?: Partial } const TableOfContentsSlideLayout: React.FC = ({ data: slideData }) => { const sections = slideData?.sections || [] const midPoint = Math.ceil(sections.length / 2) const leftSections = sections.slice(0, midPoint) const rightSections = sections.slice(midPoint) return ( <> {/* Import Google Fonts */}
{/* Title Section */}

Table of Contents

{/* Decorative Wave */}
{/* Content Grid */}
{/* Left Column */}
{leftSections.map((section) => (
{/* Number Box */}
{section.number}
{/* Title */} {section.title}
{/* Page Number */}
{section.pageNumber} {/* Dotted line effect */}
.....
))}
{/* Right Column */}
{rightSections.map((section) => (
{/* Number Box */}
{section.number}
{/* Title */} {section.title}
{/* Page Number */}
{section.pageNumber} {/* Dotted line effect */}
.....
))}
) } export default TableOfContentsSlideLayout