From 57d1f9c30a5465a51e265b94bafbb5d08f7d9d32 Mon Sep 17 00:00:00 2001 From: shiva raj badu Date: Sun, 26 Apr 2026 22:51:27 +0545 Subject: [PATCH] feat: New template pitch deck --- .../presentation/components/SlideContent.tsx | 2 +- .../app/presentation-templates/index.tsx | 3350 ++++++++++++++--- .../pitch-deck/AdaptiveMediaCardGrid.tsx | 195 + .../pitch-deck/AdaptiveValueCardGrid.tsx | 254 ++ .../pitch-deck/CardsWithChartSplit.tsx | 237 ++ .../CenteredCoverWithFooterMeta.tsx | 78 + .../pitch-deck/FullWidthStatement.tsx | 55 + .../pitch-deck/HeadlineWithDetailColumns.tsx | 130 + .../pitch-deck/HorizontalTimeline.tsx | 315 ++ .../pitch-deck/MediaAndTextSplit.tsx | 105 + .../NumberedMultiColumnOverview.tsx | 97 + .../pitch-deck/OverlappingCircleCards.tsx | 215 ++ .../pitch-deck/PanelListWithMedia.tsx | 201 + .../pitch-deck/PitchDeckChart.tsx | 477 +++ .../pitch-deck/TextAndChartSplit.tsx | 151 + .../pitch-deck/pitchDeckSchemas.ts | 132 + .../pitch-deck/settings.json | 5 + .../app/presentation-templates/index.tsx | 40 +- .../pitch-deck/AdaptiveMediaCardGrid.tsx | 198 + .../pitch-deck/AdaptiveValueCardGrid.tsx | 262 ++ .../pitch-deck/CardsWithChartSplit.tsx | 240 ++ .../CenteredCoverWithFooterMeta.tsx | 96 + .../pitch-deck/FullWidthStatement.tsx | 65 + .../pitch-deck/HeadlineWithDetailColumns.tsx | 152 + .../pitch-deck/HorizontalTimeline.tsx | 323 ++ .../pitch-deck/MediaAndTextSplit.tsx | 147 + .../NumberedMultiColumnOverview.tsx | 140 + .../pitch-deck/OverlappingCircleCards.tsx | 221 ++ .../pitch-deck/PanelListWithMedia.tsx | 269 ++ .../pitch-deck/PitchDeckChart.tsx | 477 +++ .../pitch-deck/TextAndChartSplit.tsx | 145 + .../pitch-deck/pitchDeckSchemas.ts | 132 + .../pitch-deck/settings.json | 5 + 33 files changed, 8414 insertions(+), 497 deletions(-) create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts create mode 100644 electron/servers/nextjs/app/presentation-templates/pitch-deck/settings.json create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts create mode 100644 servers/nextjs/app/presentation-templates/pitch-deck/settings.json diff --git a/electron/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx b/electron/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx index d1d1261a..47a54a58 100644 --- a/electron/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx +++ b/electron/servers/nextjs/app/(presentation-generator)/presentation/components/SlideContent.tsx @@ -147,7 +147,7 @@ const SlideContent = ({ slide, index, presentationId }: SlideContentProps) => { className={` w-full group font-syne `} > {/* */} - + {!showNewSlideSelection && (
diff --git a/electron/servers/nextjs/app/presentation-templates/index.tsx b/electron/servers/nextjs/app/presentation-templates/index.tsx index a195904a..38015267 100644 --- a/electron/servers/nextjs/app/presentation-templates/index.tsx +++ b/electron/servers/nextjs/app/presentation-templates/index.tsx @@ -1,226 +1,1123 @@ -import { TemplateWithData, TemplateGroupSettings, createTemplateEntry, TemplateLayoutsWithSettings } from "./utils"; - +import { + TemplateWithData, + TemplateGroupSettings, + createTemplateEntry, + TemplateLayoutsWithSettings, +} from "./utils"; // TODO: Step 1: Import All templates Layouts Here (like the ones below) - +// Pitch Deck templates +import PitchDeckCenteredCoverWithFooterMeta, { + Schema as PitchDeckCenteredCoverWithFooterMetaSchema, + slideLayoutId as PitchDeckCenteredCoverWithFooterMetaId, + slideLayoutName as PitchDeckCenteredCoverWithFooterMetaName, + slideLayoutDescription as PitchDeckCenteredCoverWithFooterMetaDesc, +} from "./pitch-deck/CenteredCoverWithFooterMeta"; +import PitchDeckFullWidthStatement, { + Schema as PitchDeckFullWidthStatementSchema, + slideLayoutId as PitchDeckFullWidthStatementId, + slideLayoutName as PitchDeckFullWidthStatementName, + slideLayoutDescription as PitchDeckFullWidthStatementDesc, +} from "./pitch-deck/FullWidthStatement"; +import PitchDeckMediaAndTextSplit, { + Schema as PitchDeckMediaAndTextSplitSchema, + slideLayoutId as PitchDeckMediaAndTextSplitId, + slideLayoutName as PitchDeckMediaAndTextSplitName, + slideLayoutDescription as PitchDeckMediaAndTextSplitDesc, +} from "./pitch-deck/MediaAndTextSplit"; +import PitchDeckTextAndChartSplit, { + Schema as PitchDeckTextAndChartSplitSchema, + slideLayoutId as PitchDeckTextAndChartSplitId, + slideLayoutName as PitchDeckTextAndChartSplitName, + slideLayoutDescription as PitchDeckTextAndChartSplitDesc, +} from "./pitch-deck/TextAndChartSplit"; +import PitchDeckCardsWithChartSplit, { + Schema as PitchDeckCardsWithChartSplitSchema, + slideLayoutId as PitchDeckCardsWithChartSplitId, + slideLayoutName as PitchDeckCardsWithChartSplitName, + slideLayoutDescription as PitchDeckCardsWithChartSplitDesc, +} from "./pitch-deck/CardsWithChartSplit"; +import PitchDeckAdaptiveValueCardGrid, { + Schema as PitchDeckAdaptiveValueCardGridSchema, + slideLayoutId as PitchDeckAdaptiveValueCardGridId, + slideLayoutName as PitchDeckAdaptiveValueCardGridName, + slideLayoutDescription as PitchDeckAdaptiveValueCardGridDesc, +} from "./pitch-deck/AdaptiveValueCardGrid"; +import PitchDeckAdaptiveMediaCardGrid, { + Schema as PitchDeckAdaptiveMediaCardGridSchema, + slideLayoutId as PitchDeckAdaptiveMediaCardGridId, + slideLayoutName as PitchDeckAdaptiveMediaCardGridName, + slideLayoutDescription as PitchDeckAdaptiveMediaCardGridDesc, +} from "./pitch-deck/AdaptiveMediaCardGrid"; +import PitchDeckHeadlineWithDetailColumns, { + Schema as PitchDeckHeadlineWithDetailColumnsSchema, + slideLayoutId as PitchDeckHeadlineWithDetailColumnsId, + slideLayoutName as PitchDeckHeadlineWithDetailColumnsName, + slideLayoutDescription as PitchDeckHeadlineWithDetailColumnsDesc, +} from "./pitch-deck/HeadlineWithDetailColumns"; +import PitchDeckNumberedMultiColumnOverview, { + Schema as PitchDeckNumberedMultiColumnOverviewSchema, + slideLayoutId as PitchDeckNumberedMultiColumnOverviewId, + slideLayoutName as PitchDeckNumberedMultiColumnOverviewName, + slideLayoutDescription as PitchDeckNumberedMultiColumnOverviewDesc, +} from "./pitch-deck/NumberedMultiColumnOverview"; +import PitchDeckPanelListWithMedia, { + Schema as PitchDeckPanelListWithMediaSchema, + slideLayoutId as PitchDeckPanelListWithMediaId, + slideLayoutName as PitchDeckPanelListWithMediaName, + slideLayoutDescription as PitchDeckPanelListWithMediaDesc, +} from "./pitch-deck/PanelListWithMedia"; +import PitchDeckHorizontalTimeline, { + Schema as PitchDeckHorizontalTimelineSchema, + slideLayoutId as PitchDeckHorizontalTimelineId, + slideLayoutName as PitchDeckHorizontalTimelineName, + slideLayoutDescription as PitchDeckHorizontalTimelineDesc, +} from "./pitch-deck/HorizontalTimeline"; +import PitchDeckOverlappingCircleCards, { + Schema as PitchDeckOverlappingCircleCardsSchema, + slideLayoutId as PitchDeckOverlappingCircleCardsId, + slideLayoutName as PitchDeckOverlappingCircleCardsName, + slideLayoutDescription as PitchDeckOverlappingCircleCardsDesc, +} from "./pitch-deck/OverlappingCircleCards"; // Code templates -import CodeSlide01RoadmapCover, { Schema as CodeRoadmapCoverSchema, slideLayoutId as CodeRoadmapCoverId, slideLayoutName as CodeRoadmapCoverName, slideLayoutDescription as CodeRoadmapCoverDesc } from "./Code/CoverSlide"; -import CodeSlide02CodeExplanationSplit, { Schema as CodeExplanationSplitSchema, slideLayoutId as CodeExplanationSplitId, slideLayoutName as CodeExplanationSplitName, slideLayoutDescription as CodeExplanationSplitDesc } from "./Code/CodeExplanationSplitSlide"; -import CodeSlide03ApiRequestResponse, { Schema as CodeApiRequestResponseSchema, slideLayoutId as CodeApiRequestResponseId, slideLayoutName as CodeApiRequestResponseName, slideLayoutDescription as CodeApiRequestResponseDesc } from "./Code/APIRequestResponseSlide"; -import CodeSlide04FeatureGrid, { Schema as CodeFeatureGridSchema, slideLayoutId as CodeFeatureGridId, slideLayoutName as CodeFeatureGridName, slideLayoutDescription as CodeFeatureGridDesc } from "./Code/CardsGridSlide"; -import CodeSlide05ComparisonTable, { Schema as CodeComparisonTableSchema, slideLayoutId as CodeComparisonTableId, slideLayoutName as CodeComparisonTableName, slideLayoutDescription as CodeComparisonTableDesc } from "./Code/TableSlide"; -import CodeSlide06Workflow, { Schema as CodeWorkflowSchema, slideLayoutId as CodeWorkflowId, slideLayoutName as CodeWorkflowName, slideLayoutDescription as CodeWorkflowDesc } from "./Code/WorkflowSlide"; -import CodeSlide07UseCaseList, { Schema as CodeUseCaseListSchema, slideLayoutId as CodeUseCaseListId, slideLayoutName as CodeUseCaseListName, slideLayoutDescription as CodeUseCaseListDesc } from "./Code/TwoColumnBulletListSlide"; -import CodeSlide08CodeExplanationText, { Schema as CodeExplanationTextSchema, slideLayoutId as CodeExplanationTextId, slideLayoutName as CodeExplanationTextName, slideLayoutDescription as CodeExplanationTextDesc } from "./Code/DescriptionTextSlide"; -import CodeSlide09TableOfContent, { Schema as CodeTableOfContentSchema, slideLayoutId as CodeTableOfContentId, slideLayoutName as CodeTableOfContentName, slideLayoutDescription as CodeTableOfContentDesc } from "./Code/TableOfContentSlide"; -import CodeSlide10MetricsSplit, { Schema as CodeMetricsSplitSchema, slideLayoutId as CodeMetricsSplitId, slideLayoutName as CodeMetricsSplitName, slideLayoutDescription as CodeMetricsSplitDesc } from "./Code/DescriptionAndMetricsSlide"; -import CodeSlide11MetricsGrid, { Schema as CodeMetricsGridSchema, slideLayoutId as CodeMetricsGridId, slideLayoutName as CodeMetricsGridName, slideLayoutDescription as CodeMetricsGridDesc } from "./Code/MetricsGridSlide"; +import CodeSlide01RoadmapCover, { + Schema as CodeRoadmapCoverSchema, + slideLayoutId as CodeRoadmapCoverId, + slideLayoutName as CodeRoadmapCoverName, + slideLayoutDescription as CodeRoadmapCoverDesc, +} from "./Code/CoverSlide"; +import CodeSlide02CodeExplanationSplit, { + Schema as CodeExplanationSplitSchema, + slideLayoutId as CodeExplanationSplitId, + slideLayoutName as CodeExplanationSplitName, + slideLayoutDescription as CodeExplanationSplitDesc, +} from "./Code/CodeExplanationSplitSlide"; +import CodeSlide03ApiRequestResponse, { + Schema as CodeApiRequestResponseSchema, + slideLayoutId as CodeApiRequestResponseId, + slideLayoutName as CodeApiRequestResponseName, + slideLayoutDescription as CodeApiRequestResponseDesc, +} from "./Code/APIRequestResponseSlide"; +import CodeSlide04FeatureGrid, { + Schema as CodeFeatureGridSchema, + slideLayoutId as CodeFeatureGridId, + slideLayoutName as CodeFeatureGridName, + slideLayoutDescription as CodeFeatureGridDesc, +} from "./Code/CardsGridSlide"; +import CodeSlide05ComparisonTable, { + Schema as CodeComparisonTableSchema, + slideLayoutId as CodeComparisonTableId, + slideLayoutName as CodeComparisonTableName, + slideLayoutDescription as CodeComparisonTableDesc, +} from "./Code/TableSlide"; +import CodeSlide06Workflow, { + Schema as CodeWorkflowSchema, + slideLayoutId as CodeWorkflowId, + slideLayoutName as CodeWorkflowName, + slideLayoutDescription as CodeWorkflowDesc, +} from "./Code/WorkflowSlide"; +import CodeSlide07UseCaseList, { + Schema as CodeUseCaseListSchema, + slideLayoutId as CodeUseCaseListId, + slideLayoutName as CodeUseCaseListName, + slideLayoutDescription as CodeUseCaseListDesc, +} from "./Code/TwoColumnBulletListSlide"; +import CodeSlide08CodeExplanationText, { + Schema as CodeExplanationTextSchema, + slideLayoutId as CodeExplanationTextId, + slideLayoutName as CodeExplanationTextName, + slideLayoutDescription as CodeExplanationTextDesc, +} from "./Code/DescriptionTextSlide"; +import CodeSlide09TableOfContent, { + Schema as CodeTableOfContentSchema, + slideLayoutId as CodeTableOfContentId, + slideLayoutName as CodeTableOfContentName, + slideLayoutDescription as CodeTableOfContentDesc, +} from "./Code/TableOfContentSlide"; +import CodeSlide10MetricsSplit, { + Schema as CodeMetricsSplitSchema, + slideLayoutId as CodeMetricsSplitId, + slideLayoutName as CodeMetricsSplitName, + slideLayoutDescription as CodeMetricsSplitDesc, +} from "./Code/DescriptionAndMetricsSlide"; +import CodeSlide11MetricsGrid, { + Schema as CodeMetricsGridSchema, + slideLayoutId as CodeMetricsGridId, + slideLayoutName as CodeMetricsGridName, + slideLayoutDescription as CodeMetricsGridDesc, +} from "./Code/MetricsGridSlide"; // Education templates -import EducationCoverSlide, { Schema as EduCoverSchema, slideLayoutId as EduCoverId, slideLayoutName as EduCoverName, slideLayoutDescription as EduCoverDesc } from "./Education/EducationCoverSlide"; -import EducationTableOfContentsSlide, { Schema as EduTocSchema, slideLayoutId as EduTocId, slideLayoutName as EduTocName, slideLayoutDescription as EduTocDesc } from "./Education/EducationTableOfContentsSlide"; -import EducationAboutSlide, { Schema as EduAboutSchema, slideLayoutId as EduAboutId, slideLayoutName as EduAboutName, slideLayoutDescription as EduAboutDesc } from "./Education/EducationAboutSlide"; -import EducationContentSplitSlide, { Schema as EduContentSplitSchema, slideLayoutId as EduContentSplitId, slideLayoutName as EduContentSplitName, slideLayoutDescription as EduContentSplitDesc } from "./Education/EducationContentSplitSlide"; -import EducationImageGallerySlide, { Schema as EduImageGallerySchema, slideLayoutId as EduImageGalleryId, slideLayoutName as EduImageGalleryName, slideLayoutDescription as EduImageGalleryDesc } from "./Education/EducationImageGallerySlide"; -import EducationReportDonutSlide, { Schema as EduReportDonutSchema, slideLayoutId as EduReportDonutId, slideLayoutName as EduReportDonutName, slideLayoutDescription as EduReportDonutDesc } from "./Education/EducationReportChartSlide"; -import EducationServicesSplitSlide, { Schema as EduServicesSplitSchema, slideLayoutId as EduServicesSplitId, slideLayoutName as EduServicesSplitName, slideLayoutDescription as EduServicesSplitDesc } from "./Education/EducationServicesSplitSlide"; -import EducationStatisticsGridSlide, { Schema as EduStatisticsGridSchema, slideLayoutId as EduStatisticsGridId, slideLayoutName as EduStatisticsGridName, slideLayoutDescription as EduStatisticsGridDesc } from "./Education/EducationStatisticsGridSlide"; -import EducationTimelineSlide, { Schema as EduTimelineSchema, slideLayoutId as EduTimelineId, slideLayoutName as EduTimelineName, slideLayoutDescription as EduTimelineDesc } from "./Education/EducationTimelineSlide"; +import EducationCoverSlide, { + Schema as EduCoverSchema, + slideLayoutId as EduCoverId, + slideLayoutName as EduCoverName, + slideLayoutDescription as EduCoverDesc, +} from "./Education/EducationCoverSlide"; +import EducationTableOfContentsSlide, { + Schema as EduTocSchema, + slideLayoutId as EduTocId, + slideLayoutName as EduTocName, + slideLayoutDescription as EduTocDesc, +} from "./Education/EducationTableOfContentsSlide"; +import EducationAboutSlide, { + Schema as EduAboutSchema, + slideLayoutId as EduAboutId, + slideLayoutName as EduAboutName, + slideLayoutDescription as EduAboutDesc, +} from "./Education/EducationAboutSlide"; +import EducationContentSplitSlide, { + Schema as EduContentSplitSchema, + slideLayoutId as EduContentSplitId, + slideLayoutName as EduContentSplitName, + slideLayoutDescription as EduContentSplitDesc, +} from "./Education/EducationContentSplitSlide"; +import EducationImageGallerySlide, { + Schema as EduImageGallerySchema, + slideLayoutId as EduImageGalleryId, + slideLayoutName as EduImageGalleryName, + slideLayoutDescription as EduImageGalleryDesc, +} from "./Education/EducationImageGallerySlide"; +import EducationReportDonutSlide, { + Schema as EduReportDonutSchema, + slideLayoutId as EduReportDonutId, + slideLayoutName as EduReportDonutName, + slideLayoutDescription as EduReportDonutDesc, +} from "./Education/EducationReportChartSlide"; +import EducationServicesSplitSlide, { + Schema as EduServicesSplitSchema, + slideLayoutId as EduServicesSplitId, + slideLayoutName as EduServicesSplitName, + slideLayoutDescription as EduServicesSplitDesc, +} from "./Education/EducationServicesSplitSlide"; +import EducationStatisticsGridSlide, { + Schema as EduStatisticsGridSchema, + slideLayoutId as EduStatisticsGridId, + slideLayoutName as EduStatisticsGridName, + slideLayoutDescription as EduStatisticsGridDesc, +} from "./Education/EducationStatisticsGridSlide"; +import EducationTimelineSlide, { + Schema as EduTimelineSchema, + slideLayoutId as EduTimelineId, + slideLayoutName as EduTimelineName, + slideLayoutDescription as EduTimelineDesc, +} from "./Education/EducationTimelineSlide"; // Product Overview templates -import BusinessChallengesCardsSlide, { Schema as PoBizChallengesCardsSchema, slideLayoutId as PoBizChallengesCardsId, slideLayoutName as PoBizChallengesCardsName, slideLayoutDescription as PoBizChallengesCardsDesc } from "./ProductOverview/BusinessChallengesCardsSlide"; -import BusinessChallengesGridSlide, { Schema as PoBizChallengesGridSchema, slideLayoutId as PoBizChallengesGridId, slideLayoutName as PoBizChallengesGridName, slideLayoutDescription as PoBizChallengesGridDesc } from "./ProductOverview/BusinessChallengesGridSlide"; -import ComparisonChartSlide, { Schema as PoComparisonChartSchema, slideLayoutId as PoComparisonChartId, slideLayoutName as PoComparisonChartName, slideLayoutDescription as PoComparisonChartDesc } from "./ProductOverview/ComparisonChartSlide"; -import ComparisonTableWithTextSlide, { Schema as PoComparisonTableSchema, slideLayoutId as PoComparisonTableId, slideLayoutName as PoComparisonTableName, slideLayoutDescription as PoComparisonTableDesc } from "./ProductOverview/ComparisonTableWithTextSlide"; -import CoverSlide, { Schema as PoCoverSchema, slideLayoutId as PoCoverId, slideLayoutName as PoCoverName, slideLayoutDescription as PoCoverDesc } from "./ProductOverview/CoverSlide"; -import ImageGallerySlide, { Schema as PoImageGallerySchema, slideLayoutId as PoImageGalleryId, slideLayoutName as PoImageGalleryName, slideLayoutDescription as PoImageGalleryDesc } from "./ProductOverview/ImageGallerySlide"; -import IntroductionSlide, { Schema as PoIntroductionSchema, slideLayoutId as PoIntroductionId, slideLayoutName as PoIntroductionName, slideLayoutDescription as PoIntroductionDesc } from "./ProductOverview/IntroductionSlide"; -import KpiCardsSlide, { Schema as PoKpiCardsSchema, slideLayoutId as PoKpiCardsId, slideLayoutName as PoKpiCardsName, slideLayoutDescription as PoKpiCardsDesc } from "./ProductOverview/KpiCardsSlide"; +import BusinessChallengesCardsSlide, { + Schema as PoBizChallengesCardsSchema, + slideLayoutId as PoBizChallengesCardsId, + slideLayoutName as PoBizChallengesCardsName, + slideLayoutDescription as PoBizChallengesCardsDesc, +} from "./ProductOverview/BusinessChallengesCardsSlide"; +import BusinessChallengesGridSlide, { + Schema as PoBizChallengesGridSchema, + slideLayoutId as PoBizChallengesGridId, + slideLayoutName as PoBizChallengesGridName, + slideLayoutDescription as PoBizChallengesGridDesc, +} from "./ProductOverview/BusinessChallengesGridSlide"; +import ComparisonChartSlide, { + Schema as PoComparisonChartSchema, + slideLayoutId as PoComparisonChartId, + slideLayoutName as PoComparisonChartName, + slideLayoutDescription as PoComparisonChartDesc, +} from "./ProductOverview/ComparisonChartSlide"; +import ComparisonTableWithTextSlide, { + Schema as PoComparisonTableSchema, + slideLayoutId as PoComparisonTableId, + slideLayoutName as PoComparisonTableName, + slideLayoutDescription as PoComparisonTableDesc, +} from "./ProductOverview/ComparisonTableWithTextSlide"; +import CoverSlide, { + Schema as PoCoverSchema, + slideLayoutId as PoCoverId, + slideLayoutName as PoCoverName, + slideLayoutDescription as PoCoverDesc, +} from "./ProductOverview/CoverSlide"; +import ImageGallerySlide, { + Schema as PoImageGallerySchema, + slideLayoutId as PoImageGalleryId, + slideLayoutName as PoImageGalleryName, + slideLayoutDescription as PoImageGalleryDesc, +} from "./ProductOverview/ImageGallerySlide"; +import IntroductionSlide, { + Schema as PoIntroductionSchema, + slideLayoutId as PoIntroductionId, + slideLayoutName as PoIntroductionName, + slideLayoutDescription as PoIntroductionDesc, +} from "./ProductOverview/IntroductionSlide"; +import KpiCardsSlide, { + Schema as PoKpiCardsSchema, + slideLayoutId as PoKpiCardsId, + slideLayoutName as PoKpiCardsName, + slideLayoutDescription as PoKpiCardsDesc, +} from "./ProductOverview/KpiCardsSlide"; // import MarketOpportunitySlide, { Schema as PoMarketOpportunitySchema, slideLayoutId as PoMarketOpportunityId, slideLayoutName as PoMarketOpportunityName, slideLayoutDescription as PoMarketOpportunityDesc } from "./ProductOverview/MarketOpportunitySlide"; -import MeetTeamSlide, { Schema as PoMeetTeamSchema, slideLayoutId as PoMeetTeamId, slideLayoutName as PoMeetTeamName, slideLayoutDescription as PoMeetTeamDesc } from "./ProductOverview/MeetTeamSlide"; -import MissionVisionSlide, { Schema as PoMissionVisionSchema, slideLayoutId as PoMissionVisionId, slideLayoutName as PoMissionVisionName, slideLayoutDescription as PoMissionVisionDesc } from "./ProductOverview/MissionVisionSlide"; -import OurServicesSlide, { Schema as PoOurServicesSchema, slideLayoutId as PoOurServicesId, slideLayoutName as PoOurServicesName, slideLayoutDescription as PoOurServicesDesc } from "./ProductOverview/OurServicesSlide"; -import PricingPlanSlide, { Schema as PoPricingPlanSchema, slideLayoutId as PoPricingPlanId, slideLayoutName as PoPricingPlanName, slideLayoutDescription as PoPricingPlanDesc } from "./ProductOverview/PricingPlanSlide"; -import ProcessSlide, { Schema as PoProcessSchema, slideLayoutId as PoProcessId, slideLayoutName as PoProcessName, slideLayoutDescription as PoProcessDesc } from "./ProductOverview/ProcessSlide"; -import ReportSnapshotSlide, { Schema as PoReportSnapshotSchema, slideLayoutId as PoReportSnapshotId, slideLayoutName as PoReportSnapshotName, slideLayoutDescription as PoReportSnapshotDesc } from "./ProductOverview/ReportSnapshotSlide"; -import TableOfContentSlide, { Schema as PoTableOfContentSchema, slideLayoutId as PoTableOfContentId, slideLayoutName as PoTableOfContentName, slideLayoutDescription as PoTableOfContentDesc } from "./ProductOverview/TableOfContentSlide"; +import MeetTeamSlide, { + Schema as PoMeetTeamSchema, + slideLayoutId as PoMeetTeamId, + slideLayoutName as PoMeetTeamName, + slideLayoutDescription as PoMeetTeamDesc, +} from "./ProductOverview/MeetTeamSlide"; +import MissionVisionSlide, { + Schema as PoMissionVisionSchema, + slideLayoutId as PoMissionVisionId, + slideLayoutName as PoMissionVisionName, + slideLayoutDescription as PoMissionVisionDesc, +} from "./ProductOverview/MissionVisionSlide"; +import OurServicesSlide, { + Schema as PoOurServicesSchema, + slideLayoutId as PoOurServicesId, + slideLayoutName as PoOurServicesName, + slideLayoutDescription as PoOurServicesDesc, +} from "./ProductOverview/OurServicesSlide"; +import PricingPlanSlide, { + Schema as PoPricingPlanSchema, + slideLayoutId as PoPricingPlanId, + slideLayoutName as PoPricingPlanName, + slideLayoutDescription as PoPricingPlanDesc, +} from "./ProductOverview/PricingPlanSlide"; +import ProcessSlide, { + Schema as PoProcessSchema, + slideLayoutId as PoProcessId, + slideLayoutName as PoProcessName, + slideLayoutDescription as PoProcessDesc, +} from "./ProductOverview/ProcessSlide"; +import ReportSnapshotSlide, { + Schema as PoReportSnapshotSchema, + slideLayoutId as PoReportSnapshotId, + slideLayoutName as PoReportSnapshotName, + slideLayoutDescription as PoReportSnapshotDesc, +} from "./ProductOverview/ReportSnapshotSlide"; +import TableOfContentSlide, { + Schema as PoTableOfContentSchema, + slideLayoutId as PoTableOfContentId, + slideLayoutName as PoTableOfContentName, + slideLayoutDescription as PoTableOfContentDesc, +} from "./ProductOverview/TableOfContentSlide"; // Report templates -import ReportIntroSlide, { Schema as RepIntroSchema, slideLayoutId as RepIntroId, slideLayoutName as RepIntroName, slideLayoutDescription as RepIntroDesc } from "./Report/IntroCoverSlide"; -import TitleDescriptionImageSlide, { Schema as RepIntroductionImageSchema, slideLayoutId as RepIntroductionImageId, slideLayoutName as RepIntroductionImageName, slideLayoutDescription as RepIntroductionImageDesc } from "./Report/TitleDescriptionImageSlide"; -import IntroductionStatsSlide, { Schema as RepIntroductionStatsSchema, slideLayoutId as RepIntroductionStatsId, slideLayoutName as RepIntroductionStatsName, slideLayoutDescription as RepIntroductionStatsDesc } from "./Report/MetricsSlide"; -import SolutionSlide, { Schema as RepSolutionSchema, slideLayoutId as RepSolutionId, slideLayoutName as RepSolutionName, slideLayoutDescription as RepSolutionDesc } from "./Report/TitleImageBulletCardsSlide"; -import MilestoneSlide, { Schema as RepMilestoneSchema, slideLayoutId as RepMilestoneId, slideLayoutName as RepMilestoneName, slideLayoutDescription as RepMilestoneDesc } from "./Report/MilestoneSlide"; -import DataAnalysisListSlide, { Schema as RepDataAnalysisListSchema, slideLayoutId as RepDataAnalysisListId, slideLayoutName as RepDataAnalysisListName, slideLayoutDescription as RepDataAnalysisListDesc } from "./Report/BulletListWithIconTitleDescriptionSlide"; -import DataAnalysisBarSlide, { Schema as RepDataAnalysisBarSchema, slideLayoutId as RepDataAnalysisBarId, slideLayoutName as RepDataAnalysisBarName, slideLayoutDescription as RepDataAnalysisBarDesc } from "./Report/BarChartWithBulletListWithTitleDescriptionIconSlide"; -import DataAnalysisInsightBarSlide, { Schema as RepDataAnalysisInsightBarSchema, slideLayoutId as RepDataAnalysisInsightBarId, slideLayoutName as RepDataAnalysisInsightBarName, slideLayoutDescription as RepDataAnalysisInsightBarDesc } from "./Report/TitleDescriptionChartSlide"; -import DataAnalysisLineStatsSlide, { Schema as RepDataAnalysisLineStatsSchema, slideLayoutId as RepDataAnalysisLineStatsId, slideLayoutName as RepDataAnalysisLineStatsName, slideLayoutDescription as RepDataAnalysisLineStatsDesc } from "./Report/TitleChartWithMetricsCardsSlide"; -import DataAnalysisDashboardSlide, { Schema as RepDataAnalysisDashboardSchema, slideLayoutId as RepDataAnalysisDashboardId, slideLayoutName as RepDataAnalysisDashboardName, slideLayoutDescription as RepDataAnalysisDashboardDesc } from "./Report/DataAnalysisDashboardSlide"; -import PerformanceSnapshotSlide, { Schema as RepPerformanceSnapshotSchema, slideLayoutId as RepPerformanceSnapshotId, slideLayoutName as RepPerformanceSnapshotName, slideLayoutDescription as RepPerformanceSnapshotDesc } from "./Report/TitleMetricsSlide"; -import ReportServicesSlide, { Schema as RepServicesSchema, slideLayoutId as RepServicesId, slideLayoutName as RepServicesName, slideLayoutDescription as RepServicesDesc } from "./Report/TitleWorkflowWithTitleDescriptionSlide"; -import ReportTeamSlide, { Schema as RepTeamSchema, slideLayoutId as RepTeamId, slideLayoutName as RepTeamName, slideLayoutDescription as RepTeamDesc } from "./Report/HorizontalHeightSpanningImagesWithTitleSlide"; +import ReportIntroSlide, { + Schema as RepIntroSchema, + slideLayoutId as RepIntroId, + slideLayoutName as RepIntroName, + slideLayoutDescription as RepIntroDesc, +} from "./Report/IntroCoverSlide"; +import TitleDescriptionImageSlide, { + Schema as RepIntroductionImageSchema, + slideLayoutId as RepIntroductionImageId, + slideLayoutName as RepIntroductionImageName, + slideLayoutDescription as RepIntroductionImageDesc, +} from "./Report/TitleDescriptionImageSlide"; +import IntroductionStatsSlide, { + Schema as RepIntroductionStatsSchema, + slideLayoutId as RepIntroductionStatsId, + slideLayoutName as RepIntroductionStatsName, + slideLayoutDescription as RepIntroductionStatsDesc, +} from "./Report/MetricsSlide"; +import SolutionSlide, { + Schema as RepSolutionSchema, + slideLayoutId as RepSolutionId, + slideLayoutName as RepSolutionName, + slideLayoutDescription as RepSolutionDesc, +} from "./Report/TitleImageBulletCardsSlide"; +import MilestoneSlide, { + Schema as RepMilestoneSchema, + slideLayoutId as RepMilestoneId, + slideLayoutName as RepMilestoneName, + slideLayoutDescription as RepMilestoneDesc, +} from "./Report/MilestoneSlide"; +import DataAnalysisListSlide, { + Schema as RepDataAnalysisListSchema, + slideLayoutId as RepDataAnalysisListId, + slideLayoutName as RepDataAnalysisListName, + slideLayoutDescription as RepDataAnalysisListDesc, +} from "./Report/BulletListWithIconTitleDescriptionSlide"; +import DataAnalysisBarSlide, { + Schema as RepDataAnalysisBarSchema, + slideLayoutId as RepDataAnalysisBarId, + slideLayoutName as RepDataAnalysisBarName, + slideLayoutDescription as RepDataAnalysisBarDesc, +} from "./Report/BarChartWithBulletListWithTitleDescriptionIconSlide"; +import DataAnalysisInsightBarSlide, { + Schema as RepDataAnalysisInsightBarSchema, + slideLayoutId as RepDataAnalysisInsightBarId, + slideLayoutName as RepDataAnalysisInsightBarName, + slideLayoutDescription as RepDataAnalysisInsightBarDesc, +} from "./Report/TitleDescriptionChartSlide"; +import DataAnalysisLineStatsSlide, { + Schema as RepDataAnalysisLineStatsSchema, + slideLayoutId as RepDataAnalysisLineStatsId, + slideLayoutName as RepDataAnalysisLineStatsName, + slideLayoutDescription as RepDataAnalysisLineStatsDesc, +} from "./Report/TitleChartWithMetricsCardsSlide"; +import DataAnalysisDashboardSlide, { + Schema as RepDataAnalysisDashboardSchema, + slideLayoutId as RepDataAnalysisDashboardId, + slideLayoutName as RepDataAnalysisDashboardName, + slideLayoutDescription as RepDataAnalysisDashboardDesc, +} from "./Report/DataAnalysisDashboardSlide"; +import PerformanceSnapshotSlide, { + Schema as RepPerformanceSnapshotSchema, + slideLayoutId as RepPerformanceSnapshotId, + slideLayoutName as RepPerformanceSnapshotName, + slideLayoutDescription as RepPerformanceSnapshotDesc, +} from "./Report/TitleMetricsSlide"; +import ReportServicesSlide, { + Schema as RepServicesSchema, + slideLayoutId as RepServicesId, + slideLayoutName as RepServicesName, + slideLayoutDescription as RepServicesDesc, +} from "./Report/TitleWorkflowWithTitleDescriptionSlide"; +import ReportTeamSlide, { + Schema as RepTeamSchema, + slideLayoutId as RepTeamId, + slideLayoutName as RepTeamName, + slideLayoutDescription as RepTeamDesc, +} from "./Report/HorizontalHeightSpanningImagesWithTitleSlide"; // General templates -import GeneralIntroSlideLayout, { Schema as GeneralIntroSchema, layoutId as GeneralIntroId, layoutName as GeneralIntroName, layoutDescription as GeneralIntroDesc } from "./general/IntroSlideLayout"; -import BasicInfoSlideLayout, { Schema as BasicInfoSchema, layoutId as BasicInfoId, layoutName as BasicInfoName, layoutDescription as BasicInfoDesc } from "./general/BasicInfoSlideLayout"; -import BulletIconsOnlySlideLayout, { Schema as BulletIconsOnlySchema, layoutId as BulletIconsOnlyId, layoutName as BulletIconsOnlyName, layoutDescription as BulletIconsOnlyDesc } from "./general/BulletIconsOnlySlideLayout"; -import BulletWithIconsSlideLayout, { Schema as BulletWithIconsSchema, layoutId as BulletWithIconsId, layoutName as BulletWithIconsName, layoutDescription as BulletWithIconsDesc } from "./general/BulletWithIconsSlideLayout"; -import ChartWithBulletsSlideLayout, { Schema as ChartWithBulletsSchema, layoutId as ChartWithBulletsId, layoutName as ChartWithBulletsName, layoutDescription as ChartWithBulletsDesc } from "./general/ChartWithBulletsSlideLayout"; -import MetricsSlideLayout, { Schema as MetricsSchema, layoutId as MetricsId, layoutName as MetricsName, layoutDescription as MetricsDesc } from "./general/MetricsSlideLayout"; -import MetricsWithImageSlideLayout, { Schema as MetricsWithImageSchema, layoutId as MetricsWithImageId, layoutName as MetricsWithImageName, layoutDescription as MetricsWithImageDesc } from "./general/MetricsWithImageSlideLayout"; -import NumberedBulletsSlideLayout, { Schema as NumberedBulletsSchema, layoutId as NumberedBulletsId, layoutName as NumberedBulletsName, layoutDescription as NumberedBulletsDesc } from "./general/NumberedBulletsSlideLayout"; -import QuoteSlideLayout, { Schema as QuoteSchema, layoutId as QuoteId, layoutName as QuoteName, layoutDescription as QuoteDesc } from "./general/QuoteSlideLayout"; -import TableInfoSlideLayout, { Schema as TableInfoSchema, layoutId as TableInfoId, layoutName as TableInfoName, layoutDescription as TableInfoDesc } from "./general/TableInfoSlideLayout"; -import TableOfContentsSlideLayout, { Schema as TableOfContentsSchema, layoutId as TableOfContentsId, layoutName as TableOfContentsName, layoutDescription as TableOfContentsDesc } from "./general/TableOfContentsSlideLayout"; -import TeamSlideLayout, { Schema as TeamSchema, layoutId as TeamId, layoutName as TeamName, layoutDescription as TeamDesc } from "./general/TeamSlideLayout"; +import GeneralIntroSlideLayout, { + Schema as GeneralIntroSchema, + layoutId as GeneralIntroId, + layoutName as GeneralIntroName, + layoutDescription as GeneralIntroDesc, +} from "./general/IntroSlideLayout"; +import BasicInfoSlideLayout, { + Schema as BasicInfoSchema, + layoutId as BasicInfoId, + layoutName as BasicInfoName, + layoutDescription as BasicInfoDesc, +} from "./general/BasicInfoSlideLayout"; +import BulletIconsOnlySlideLayout, { + Schema as BulletIconsOnlySchema, + layoutId as BulletIconsOnlyId, + layoutName as BulletIconsOnlyName, + layoutDescription as BulletIconsOnlyDesc, +} from "./general/BulletIconsOnlySlideLayout"; +import BulletWithIconsSlideLayout, { + Schema as BulletWithIconsSchema, + layoutId as BulletWithIconsId, + layoutName as BulletWithIconsName, + layoutDescription as BulletWithIconsDesc, +} from "./general/BulletWithIconsSlideLayout"; +import ChartWithBulletsSlideLayout, { + Schema as ChartWithBulletsSchema, + layoutId as ChartWithBulletsId, + layoutName as ChartWithBulletsName, + layoutDescription as ChartWithBulletsDesc, +} from "./general/ChartWithBulletsSlideLayout"; +import MetricsSlideLayout, { + Schema as MetricsSchema, + layoutId as MetricsId, + layoutName as MetricsName, + layoutDescription as MetricsDesc, +} from "./general/MetricsSlideLayout"; +import MetricsWithImageSlideLayout, { + Schema as MetricsWithImageSchema, + layoutId as MetricsWithImageId, + layoutName as MetricsWithImageName, + layoutDescription as MetricsWithImageDesc, +} from "./general/MetricsWithImageSlideLayout"; +import NumberedBulletsSlideLayout, { + Schema as NumberedBulletsSchema, + layoutId as NumberedBulletsId, + layoutName as NumberedBulletsName, + layoutDescription as NumberedBulletsDesc, +} from "./general/NumberedBulletsSlideLayout"; +import QuoteSlideLayout, { + Schema as QuoteSchema, + layoutId as QuoteId, + layoutName as QuoteName, + layoutDescription as QuoteDesc, +} from "./general/QuoteSlideLayout"; +import TableInfoSlideLayout, { + Schema as TableInfoSchema, + layoutId as TableInfoId, + layoutName as TableInfoName, + layoutDescription as TableInfoDesc, +} from "./general/TableInfoSlideLayout"; +import TableOfContentsSlideLayout, { + Schema as TableOfContentsSchema, + layoutId as TableOfContentsId, + layoutName as TableOfContentsName, + layoutDescription as TableOfContentsDesc, +} from "./general/TableOfContentsSlideLayout"; +import TeamSlideLayout, { + Schema as TeamSchema, + layoutId as TeamId, + layoutName as TeamName, + layoutDescription as TeamDesc, +} from "./general/TeamSlideLayout"; // Neo general templates -import HeadlineTextWithBulletsAndStatsLayout, { Schema as HeadlineTextWithBulletsAndStatsSchema, layoutId as HeadlineTextWithBulletsAndStatsId, layoutName as HeadlineTextWithBulletsAndStatsName, layoutDescription as HeadlineTextWithBulletsAndStatsDesc } from "./neo-general/HeadlineTextWithBulletsAndStats"; -import HeadlineDescriptionWithImageLayout, { Schema as HeadlineDescriptionWithImageSchema, layoutId as HeadlineDescriptionWithImageId, layoutName as HeadlineDescriptionWithImageName, layoutDescription as HeadlineDescriptionWithImageDesc } from "./neo-general/HeadlineDescriptionWithImage"; -import HeadlineDescriptionWithDoubleImageLayout, { Schema as HeadlineDescriptionWithDoubleImageSchema, layoutId as HeadlineDescriptionWithDoubleImageId, layoutName as HeadlineDescriptionWithDoubleImageName, layoutDescription as HeadlineDescriptionWithDoubleImageDesc } from "./neo-general/HeadlineDescriptionWithDoubleImage"; -import IndexedThreeColumnListLayout, { Schema as IndexedThreeColumnListSchema, layoutId as IndexedThreeColumnListId, layoutName as IndexedThreeColumnListName, layoutDescription as IndexedThreeColumnListDesc } from "./neo-general/IndexedThreeColumnList"; -import LayoutTextBlockWithMetricCardsLayout, { Schema as LayoutTextBlockWithMetricCardsSchema, layoutId as LayoutTextBlockWithMetricCardsId, layoutName as LayoutTextBlockWithMetricCardsName, layoutDescription as LayoutTextBlockWithMetricCardsDesc } from "./neo-general/LayoutTextBlockWithMetricCards"; -import LeftAlignQuotesLayout, { Schema as LeftAlignQuotesSchema, layoutId as LeftAlignQuotesId, layoutName as LeftAlignQuotesName, layoutDescription as LeftAlignQuotesDesc } from "./neo-general/LeftAlignQuote"; -import TitleDescriptionWithTableLayout, { Schema as TitleDescriptionWithTableSchema, layoutId as TitleDescriptionWithTableId, layoutName as TitleDescriptionWithTableName, layoutDescription as TitleDescriptionWithTableDesc } from "./neo-general/TitleDescriptionWithTable"; -import ChallengeAndOutcomeWithOneStatLayout, { Schema as ChallengeAndOutcomeWithOneStatSchema, layoutId as ChallengeAndOutcomeWithOneStatId, layoutName as ChallengeAndOutcomeWithOneStatName, layoutDescription as ChallengeAndOutcomeWithOneStatDesc } from "./neo-general/ChallengeAndOutcomeWithOneStat"; -import GridBasedEightMetricsSnapshotsLayout, { Schema as GridBasedEightMetricsSnapshotsSchema, layoutId as GridBasedEightMetricsSnapshotsId, layoutName as GridBasedEightMetricsSnapshotsName, layoutDescription as GridBasedEightMetricsSnapshotsDesc } from "./neo-general/GridBasedEightMetricsSnapshots"; -import TitleTopDescriptionFourTeamMembersGridLayout, { Schema as TitleTopDescriptionFourTeamMembersGridSchema, layoutId as TitleTopDescriptionFourTeamMembersGridId, layoutName as TitleTopDescriptionFourTeamMembersGridName, layoutDescription as TitleTopDescriptionFourTeamMembersGridDesc } from "./neo-general/TitleTopDescriptionFourTeamMembersGrid"; -import TitleThreeColumnRiskConstraintsLayout, { Schema as TitleThreeColumnRiskConstraintsSchema, layoutId as TitleThreeColumnRiskConstraintsId, layoutName as TitleThreeColumnRiskConstraintsName, layoutDescription as TitleThreeColumnRiskConstraintsDesc } from "./neo-general/TitleThreeColumnRiskConstraints"; -import ThankYouContactInfoFooterImageSlideLayout, { Schema as ThankYouContactInfoFooterImageSlideSchema, layoutId as ThankYouContactInfoFooterImageSlideId, layoutName as ThankYouContactInfoFooterImageSlideName, layoutDescription as ThankYouContactInfoFooterImageSlideDesc } from "./neo-general/ThankYouContactInfoFooterImageSlide"; -import TimelineLayout, { Schema as TimelineLayoutSchema, layoutId as TimelineLayoutId, layoutName as TimelineLayoutName, layoutDescription as TimelineLayoutDesc } from "./neo-general/Timeline"; +import HeadlineTextWithBulletsAndStatsLayout, { + Schema as HeadlineTextWithBulletsAndStatsSchema, + layoutId as HeadlineTextWithBulletsAndStatsId, + layoutName as HeadlineTextWithBulletsAndStatsName, + layoutDescription as HeadlineTextWithBulletsAndStatsDesc, +} from "./neo-general/HeadlineTextWithBulletsAndStats"; +import HeadlineDescriptionWithImageLayout, { + Schema as HeadlineDescriptionWithImageSchema, + layoutId as HeadlineDescriptionWithImageId, + layoutName as HeadlineDescriptionWithImageName, + layoutDescription as HeadlineDescriptionWithImageDesc, +} from "./neo-general/HeadlineDescriptionWithImage"; +import HeadlineDescriptionWithDoubleImageLayout, { + Schema as HeadlineDescriptionWithDoubleImageSchema, + layoutId as HeadlineDescriptionWithDoubleImageId, + layoutName as HeadlineDescriptionWithDoubleImageName, + layoutDescription as HeadlineDescriptionWithDoubleImageDesc, +} from "./neo-general/HeadlineDescriptionWithDoubleImage"; +import IndexedThreeColumnListLayout, { + Schema as IndexedThreeColumnListSchema, + layoutId as IndexedThreeColumnListId, + layoutName as IndexedThreeColumnListName, + layoutDescription as IndexedThreeColumnListDesc, +} from "./neo-general/IndexedThreeColumnList"; +import LayoutTextBlockWithMetricCardsLayout, { + Schema as LayoutTextBlockWithMetricCardsSchema, + layoutId as LayoutTextBlockWithMetricCardsId, + layoutName as LayoutTextBlockWithMetricCardsName, + layoutDescription as LayoutTextBlockWithMetricCardsDesc, +} from "./neo-general/LayoutTextBlockWithMetricCards"; +import LeftAlignQuotesLayout, { + Schema as LeftAlignQuotesSchema, + layoutId as LeftAlignQuotesId, + layoutName as LeftAlignQuotesName, + layoutDescription as LeftAlignQuotesDesc, +} from "./neo-general/LeftAlignQuote"; +import TitleDescriptionWithTableLayout, { + Schema as TitleDescriptionWithTableSchema, + layoutId as TitleDescriptionWithTableId, + layoutName as TitleDescriptionWithTableName, + layoutDescription as TitleDescriptionWithTableDesc, +} from "./neo-general/TitleDescriptionWithTable"; +import ChallengeAndOutcomeWithOneStatLayout, { + Schema as ChallengeAndOutcomeWithOneStatSchema, + layoutId as ChallengeAndOutcomeWithOneStatId, + layoutName as ChallengeAndOutcomeWithOneStatName, + layoutDescription as ChallengeAndOutcomeWithOneStatDesc, +} from "./neo-general/ChallengeAndOutcomeWithOneStat"; +import GridBasedEightMetricsSnapshotsLayout, { + Schema as GridBasedEightMetricsSnapshotsSchema, + layoutId as GridBasedEightMetricsSnapshotsId, + layoutName as GridBasedEightMetricsSnapshotsName, + layoutDescription as GridBasedEightMetricsSnapshotsDesc, +} from "./neo-general/GridBasedEightMetricsSnapshots"; +import TitleTopDescriptionFourTeamMembersGridLayout, { + Schema as TitleTopDescriptionFourTeamMembersGridSchema, + layoutId as TitleTopDescriptionFourTeamMembersGridId, + layoutName as TitleTopDescriptionFourTeamMembersGridName, + layoutDescription as TitleTopDescriptionFourTeamMembersGridDesc, +} from "./neo-general/TitleTopDescriptionFourTeamMembersGrid"; +import TitleThreeColumnRiskConstraintsLayout, { + Schema as TitleThreeColumnRiskConstraintsSchema, + layoutId as TitleThreeColumnRiskConstraintsId, + layoutName as TitleThreeColumnRiskConstraintsName, + layoutDescription as TitleThreeColumnRiskConstraintsDesc, +} from "./neo-general/TitleThreeColumnRiskConstraints"; +import ThankYouContactInfoFooterImageSlideLayout, { + Schema as ThankYouContactInfoFooterImageSlideSchema, + layoutId as ThankYouContactInfoFooterImageSlideId, + layoutName as ThankYouContactInfoFooterImageSlideName, + layoutDescription as ThankYouContactInfoFooterImageSlideDesc, +} from "./neo-general/ThankYouContactInfoFooterImageSlide"; +import TimelineLayout, { + Schema as TimelineLayoutSchema, + layoutId as TimelineLayoutId, + layoutName as TimelineLayoutName, + layoutDescription as TimelineLayoutDesc, +} from "./neo-general/Timeline"; -import TitleWithFullWidthChartLayout, { Schema as TitleWithFullWidthChartSchema, layoutId as TitleWithFullWidthChartId, layoutName as TitleWithFullWidthChartName, layoutDescription as TitleWithFullWidthChartDesc } from "./neo-general/TitleWithFullWidthChart"; -import TitleMetricsWithChartLayout, { Schema as TitleMetricsWithChartSchema, layoutId as TitleMetricsWithChartId, layoutName as TitleMetricsWithChartName, layoutDescription as TitleMetricsWithChartDesc } from "./neo-general/TitleMetricsWithChart"; -import TitleWithGridBasedHeadingAndDescriptionLayout, { Schema as TitleWithGridBasedHeadingAndDescriptionSchema, layoutId as TitleWithGridBasedHeadingAndDescriptionId, layoutName as TitleWithGridBasedHeadingAndDescriptionName, layoutDescription as TitleWithGridBasedHeadingAndDescriptionDesc } from './neo-general/TitleWithGridBasedHeadingAndDescription' +import TitleWithFullWidthChartLayout, { + Schema as TitleWithFullWidthChartSchema, + layoutId as TitleWithFullWidthChartId, + layoutName as TitleWithFullWidthChartName, + layoutDescription as TitleWithFullWidthChartDesc, +} from "./neo-general/TitleWithFullWidthChart"; +import TitleMetricsWithChartLayout, { + Schema as TitleMetricsWithChartSchema, + layoutId as TitleMetricsWithChartId, + layoutName as TitleMetricsWithChartName, + layoutDescription as TitleMetricsWithChartDesc, +} from "./neo-general/TitleMetricsWithChart"; +import TitleWithGridBasedHeadingAndDescriptionLayout, { + Schema as TitleWithGridBasedHeadingAndDescriptionSchema, + layoutId as TitleWithGridBasedHeadingAndDescriptionId, + layoutName as TitleWithGridBasedHeadingAndDescriptionName, + layoutDescription as TitleWithGridBasedHeadingAndDescriptionDesc, +} from "./neo-general/TitleWithGridBasedHeadingAndDescription"; -import TextSplitWithEmphasisBlockLayout, { Schema as TextSplitWithEmphasisBlockSchema, layoutId as TextSplitWithEmphasisBlockId, layoutName as TextSplitWithEmphasisBlockName, layoutDescription as TextSplitWithEmphasisBlockDesc } from './neo-general/TextSplitWithEmphasisBlock' - - - -import BulletIconsOnlySlideNeoGeneralLayout, { Schema as BulletIconsOnlyNeoGeneralSchema, layoutId as BulletIconsOnlyNeoGeneralId, layoutName as BulletIconsOnlyNeoGeneralName, layoutDescription as BulletIconsOnlyNeoGeneralDesc } from "./neo-general/BulletIconsOnlySlideLayout"; -import BulletWithIconsSlideNeoGeneralLayout, { Schema as BulletWithIconsNeoGeneralSchema, layoutId as BulletWithIconsNeoGeneralId, layoutName as BulletWithIconsNeoGeneralName, layoutDescription as BulletWithIconsNeoGeneralDesc } from "./neo-general/BulletWithIconsSlideLayout"; -import ChartWithBulletsSlideNeoGeneralLayout, { Schema as ChartWithBulletsNeoGeneralSchema, layoutId as ChartWithBulletsNeoGeneralId, layoutName as ChartWithBulletsNeoGeneralName, layoutDescription as ChartWithBulletsNeoGeneralDesc } from "./neo-general/ChartWithBulletsSlideLayout"; - -import MetricsWithImageSlideNeoGeneralLayout, { Schema as MetricsWithImageNeoGeneralSchema, layoutId as MetricsWithImageNeoGeneralId, layoutName as MetricsWithImageNeoGeneralName, layoutDescription as MetricsWithImageNeoGeneralDesc } from "./neo-general/MetricsWithImageSlideLayout"; -import NumberedBulletsSlideNeoGeneralLayout, { Schema as NumberedBulletsNeoGeneralSchema, layoutId as NumberedBulletsNeoGeneralId, layoutName as NumberedBulletsNeoGeneralName, layoutDescription as NumberedBulletsNeoGeneralDesc } from "./neo-general/NumberedBulletsSlideLayout"; -import QuoteSlideNeoGeneralLayout, { Schema as QuoteNeoGeneralSchema, layoutId as QuoteNeoGeneralId, layoutName as QuoteNeoGeneralName, layoutDescription as QuoteNeoGeneralDesc } from "./neo-general/QuoteSlideLayout"; - -import TeamSlideNeoGeneralLayout, { Schema as TeamNeoGeneralSchema, layoutId as TeamNeoGeneralId, layoutName as TeamNeoGeneralName, layoutDescription as TeamNeoGeneralDesc } from "./neo-general/TeamSlideLayout"; -import TableOfContentWithoutPageNumberLayout, { Schema as TableOfContentWithoutPageNumberSchema, layoutId as TableOfContentWithoutPageNumberId, layoutName as TableOfContentWithoutPageNumberName, layoutDescription as TableOfContentWithoutPageNumberDesc } from "./neo-general/TableOfContentWithoutPageNumber"; -import TitleMetricValueMetricLabelFunnelStagesLayout, { Schema as TitleMetricValueMetricLabelFunnelStagesSchema, layoutId as TitleMetricValueMetricLabelFunnelStagesId, layoutName as TitleMetricValueMetricLabelFunnelStagesName, layoutDescription as TitleMetricValueMetricLabelFunnelStagesDesc } from "./neo-general/TitleMetricValueMetricLabelFunnelStages"; -import MultiChartGridSlideLayout, { Schema as MultiChartGridSlideSchema, layoutId as MultiChartGridSlideId, layoutName as MultiChartGridSlideName, layoutDescription as MultiChartGridSlideDesc } from "./neo-general/MultiChartGridSlideLayout"; -import TitleDescriptionMultiChartGridWithMetricsLayout, { Schema as TitleDescriptionMultiChartGridWithMetricsSchema, layoutId as TitleDescriptionMultiChartGridWithMetricsId, layoutName as TitleDescriptionMultiChartGridWithMetricsName, layoutDescription as TitleDescriptionMultiChartGridWithMetricsDesc } from "./neo-general/TitleDescriptionMultiChartGridWithMetrics"; -import TitleDescriptionMultiChartGridWithBulletsLayout, { Schema as TitleDescriptionMultiChartGridWithBulletsSchema, layoutId as TitleDescriptionMultiChartGridWithBulletsId, layoutName as TitleDescriptionMultiChartGridWithBulletsName, layoutDescription as TitleDescriptionMultiChartGridWithBulletsDesc } from "./neo-general/TitleDescriptionMultiChartGridWithBullets"; +import TextSplitWithEmphasisBlockLayout, { + Schema as TextSplitWithEmphasisBlockSchema, + layoutId as TextSplitWithEmphasisBlockId, + layoutName as TextSplitWithEmphasisBlockName, + layoutDescription as TextSplitWithEmphasisBlockDesc, +} from "./neo-general/TextSplitWithEmphasisBlock"; +import BulletIconsOnlySlideNeoGeneralLayout, { + Schema as BulletIconsOnlyNeoGeneralSchema, + layoutId as BulletIconsOnlyNeoGeneralId, + layoutName as BulletIconsOnlyNeoGeneralName, + layoutDescription as BulletIconsOnlyNeoGeneralDesc, +} from "./neo-general/BulletIconsOnlySlideLayout"; +import BulletWithIconsSlideNeoGeneralLayout, { + Schema as BulletWithIconsNeoGeneralSchema, + layoutId as BulletWithIconsNeoGeneralId, + layoutName as BulletWithIconsNeoGeneralName, + layoutDescription as BulletWithIconsNeoGeneralDesc, +} from "./neo-general/BulletWithIconsSlideLayout"; +import ChartWithBulletsSlideNeoGeneralLayout, { + Schema as ChartWithBulletsNeoGeneralSchema, + layoutId as ChartWithBulletsNeoGeneralId, + layoutName as ChartWithBulletsNeoGeneralName, + layoutDescription as ChartWithBulletsNeoGeneralDesc, +} from "./neo-general/ChartWithBulletsSlideLayout"; +import MetricsWithImageSlideNeoGeneralLayout, { + Schema as MetricsWithImageNeoGeneralSchema, + layoutId as MetricsWithImageNeoGeneralId, + layoutName as MetricsWithImageNeoGeneralName, + layoutDescription as MetricsWithImageNeoGeneralDesc, +} from "./neo-general/MetricsWithImageSlideLayout"; +import NumberedBulletsSlideNeoGeneralLayout, { + Schema as NumberedBulletsNeoGeneralSchema, + layoutId as NumberedBulletsNeoGeneralId, + layoutName as NumberedBulletsNeoGeneralName, + layoutDescription as NumberedBulletsNeoGeneralDesc, +} from "./neo-general/NumberedBulletsSlideLayout"; +import QuoteSlideNeoGeneralLayout, { + Schema as QuoteNeoGeneralSchema, + layoutId as QuoteNeoGeneralId, + layoutName as QuoteNeoGeneralName, + layoutDescription as QuoteNeoGeneralDesc, +} from "./neo-general/QuoteSlideLayout"; +import TeamSlideNeoGeneralLayout, { + Schema as TeamNeoGeneralSchema, + layoutId as TeamNeoGeneralId, + layoutName as TeamNeoGeneralName, + layoutDescription as TeamNeoGeneralDesc, +} from "./neo-general/TeamSlideLayout"; +import TableOfContentWithoutPageNumberLayout, { + Schema as TableOfContentWithoutPageNumberSchema, + layoutId as TableOfContentWithoutPageNumberId, + layoutName as TableOfContentWithoutPageNumberName, + layoutDescription as TableOfContentWithoutPageNumberDesc, +} from "./neo-general/TableOfContentWithoutPageNumber"; +import TitleMetricValueMetricLabelFunnelStagesLayout, { + Schema as TitleMetricValueMetricLabelFunnelStagesSchema, + layoutId as TitleMetricValueMetricLabelFunnelStagesId, + layoutName as TitleMetricValueMetricLabelFunnelStagesName, + layoutDescription as TitleMetricValueMetricLabelFunnelStagesDesc, +} from "./neo-general/TitleMetricValueMetricLabelFunnelStages"; +import MultiChartGridSlideLayout, { + Schema as MultiChartGridSlideSchema, + layoutId as MultiChartGridSlideId, + layoutName as MultiChartGridSlideName, + layoutDescription as MultiChartGridSlideDesc, +} from "./neo-general/MultiChartGridSlideLayout"; +import TitleDescriptionMultiChartGridWithMetricsLayout, { + Schema as TitleDescriptionMultiChartGridWithMetricsSchema, + layoutId as TitleDescriptionMultiChartGridWithMetricsId, + layoutName as TitleDescriptionMultiChartGridWithMetricsName, + layoutDescription as TitleDescriptionMultiChartGridWithMetricsDesc, +} from "./neo-general/TitleDescriptionMultiChartGridWithMetrics"; +import TitleDescriptionMultiChartGridWithBulletsLayout, { + Schema as TitleDescriptionMultiChartGridWithBulletsSchema, + layoutId as TitleDescriptionMultiChartGridWithBulletsId, + layoutName as TitleDescriptionMultiChartGridWithBulletsName, + layoutDescription as TitleDescriptionMultiChartGridWithBulletsDesc, +} from "./neo-general/TitleDescriptionMultiChartGridWithBullets"; // Modern templates -import ModernIntroSlideLayout, { Schema as ModernIntroSchema, layoutId as ModernIntroId, layoutName as ModernIntroName, layoutDescription as ModernIntroDesc } from "./modern/IntroSlideLayout"; -import BulletsWithIconsDescriptionGrid, { Schema as BulletsIconsGridSchema, layoutId as BulletsIconsGridId, layoutName as BulletsIconsGridName, layoutDescription as BulletsIconsGridDesc } from "./modern/BulletsWithIconsDescriptionGrid"; -import ModernBulletWithIconsSlideLayout, { Schema as ModernBulletIconsSchema, layoutId as ModernBulletIconsId, layoutName as ModernBulletIconsName, layoutDescription as ModernBulletIconsDesc } from "./modern/BulletWithIconsSlideLayout"; -import ChartOrTableWithDescription, { Schema as ChartTableDescSchema, layoutId as ChartTableDescId, layoutName as ChartTableDescName, layoutDescription as ChartTableDescDesc } from "./modern/ChartOrTableWithDescription"; -import ChartOrTableWithMetricsDescription, { Schema as ChartMetricsSchema, layoutId as ChartMetricsId, layoutName as ChartMetricsName, layoutDescription as ChartMetricsDesc } from "./modern/ChartOrTableWithMetricsDescription"; -import ImageAndDescriptionLayout, { Schema as ImageDescSchema, layoutId as ImageDescId, layoutName as ImageDescName, layoutDescription as ImageDescDesc } from "./modern/ImageAndDescriptionLayout"; -import ImageListWithDescriptionSlideLayout, { Schema as ImageListDescSchema, layoutId as ImageListDescId, layoutName as ImageListDescName, layoutDescription as ImageListDescDesc } from "./modern/ImageListWithDescriptionSlideLayout"; -import ImagesWithDescriptionLayout, { Schema as ImagesDescSchema, layoutId as ImagesDescId, layoutName as ImagesDescName, layoutDescription as ImagesDescDesc } from "./modern/ImagesWithDescriptionLayout"; -import MetricsWithDescription, { Schema as MetricsDescSchema, layoutId as MetricsDescId, layoutName as MetricsDescName, layoutDescription as MetricsDescDesc } from "./modern/MetricsWithDescription"; -import ModernTableOfContentsLayout, { Schema as ModernTocSchema, layoutId as ModernTocId, layoutName as ModernTocName, layoutDescription as ModernTocDesc } from "./modern/TableOfContentsLayout"; +import ModernIntroSlideLayout, { + Schema as ModernIntroSchema, + layoutId as ModernIntroId, + layoutName as ModernIntroName, + layoutDescription as ModernIntroDesc, +} from "./modern/IntroSlideLayout"; +import BulletsWithIconsDescriptionGrid, { + Schema as BulletsIconsGridSchema, + layoutId as BulletsIconsGridId, + layoutName as BulletsIconsGridName, + layoutDescription as BulletsIconsGridDesc, +} from "./modern/BulletsWithIconsDescriptionGrid"; +import ModernBulletWithIconsSlideLayout, { + Schema as ModernBulletIconsSchema, + layoutId as ModernBulletIconsId, + layoutName as ModernBulletIconsName, + layoutDescription as ModernBulletIconsDesc, +} from "./modern/BulletWithIconsSlideLayout"; +import ChartOrTableWithDescription, { + Schema as ChartTableDescSchema, + layoutId as ChartTableDescId, + layoutName as ChartTableDescName, + layoutDescription as ChartTableDescDesc, +} from "./modern/ChartOrTableWithDescription"; +import ChartOrTableWithMetricsDescription, { + Schema as ChartMetricsSchema, + layoutId as ChartMetricsId, + layoutName as ChartMetricsName, + layoutDescription as ChartMetricsDesc, +} from "./modern/ChartOrTableWithMetricsDescription"; +import ImageAndDescriptionLayout, { + Schema as ImageDescSchema, + layoutId as ImageDescId, + layoutName as ImageDescName, + layoutDescription as ImageDescDesc, +} from "./modern/ImageAndDescriptionLayout"; +import ImageListWithDescriptionSlideLayout, { + Schema as ImageListDescSchema, + layoutId as ImageListDescId, + layoutName as ImageListDescName, + layoutDescription as ImageListDescDesc, +} from "./modern/ImageListWithDescriptionSlideLayout"; +import ImagesWithDescriptionLayout, { + Schema as ImagesDescSchema, + layoutId as ImagesDescId, + layoutName as ImagesDescName, + layoutDescription as ImagesDescDesc, +} from "./modern/ImagesWithDescriptionLayout"; +import MetricsWithDescription, { + Schema as MetricsDescSchema, + layoutId as MetricsDescId, + layoutName as MetricsDescName, + layoutDescription as MetricsDescDesc, +} from "./modern/MetricsWithDescription"; +import ModernTableOfContentsLayout, { + Schema as ModernTocSchema, + layoutId as ModernTocId, + layoutName as ModernTocName, + layoutDescription as ModernTocDesc, +} from "./modern/TableOfContentsLayout"; // Neo modern templates -import TitleDescriptionBulletListModernLayout, { Schema as TitleDescriptionBulletListModernSchema, layoutId as TitleDescriptionBulletListModernId, layoutName as TitleDescriptionBulletListModernName, layoutDescription as TitleDescriptionBulletListModernDesc } from './neo-modern/TitleDescriptionBulletList'; -import TitleDescriptionContactListLayout, { Schema as TitleDescriptionContactListSchema, layoutId as TitleDescriptionContactListId, layoutName as TitleDescriptionContactListName, layoutDescription as TitleDescriptionContactListDesc } from './neo-modern/TitleDescriptionContactList'; -import TitleDescriptionDualMetricsGridLayout, { Schema as TitleDescriptionDualMetricsGridSchema, layoutId as TitleDescriptionDualMetricsGridId, layoutName as TitleDescriptionDualMetricsGridName, layoutDescription as TitleDescriptionDualMetricsGridDesc } from './neo-modern/TitleDescriptionDualMetricsGrid'; -import TitleDescriptionIconTimelineLayout, { Schema as TitleDescriptionIconTimelineSchema, layoutId as TitleDescriptionIconTimelineId, layoutName as TitleDescriptionIconTimelineName, layoutDescription as TitleDescriptionIconTimelineDesc } from './neo-modern/TitleDescriptionIconTimeline'; -import TitleDescriptionImageRightModernLayout, { Schema as TitleDescriptionImageRightModernSchema, layoutId as TitleDescriptionImageRightModernId, layoutName as TitleDescriptionImageRightModernName, layoutDescription as TitleDescriptionImageRightModernDesc } from './neo-modern/TitleDescriptionImageRight'; -import TitleDescriptionMetricsChartLayout, { Schema as TitleDescriptionMetricsChartSchema, layoutId as TitleDescriptionMetricsChartId, layoutName as TitleDescriptionMetricsChartName, layoutDescription as TitleDescriptionMetricsChartDesc } from './neo-modern/TitleDescriptionMetricsChart'; - -import TitleDescriptionMetricsImageLayout, { Schema as TitleDescriptionMetricsImageSchema, layoutId as TitleDescriptionMetricsImageId, layoutName as TitleDescriptionMetricsImageName, layoutDescription as TitleDescriptionMetricsImageDesc } from './neo-modern/TitleDescriptionMetricsImage'; -import TitleDescriptionMetricsTableLayout, { Schema as TitleDescriptionMetricsTableSchema, layoutId as TitleDescriptionMetricsTableId, layoutName as TitleDescriptionMetricsTableName, layoutDescription as TitleDescriptionMetricsTableDesc } from './neo-modern/TitleDescriptionTable'; -import TitleDualComparisonChartsLayout, { Schema as TitleDualComparisonChartsSchema, layoutId as TitleDualComparisonChartsId, layoutName as TitleDualComparisonChartsName, layoutDescription as TitleDualComparisonChartsDesc } from './neo-modern/TitleDualComparisonCharts'; -import TitleDualComparisonCardsModernLayout, { Schema as TitleDualComparisonCardsModernSchema, layoutId as TitleDualComparisonCardsModernId, layoutName as TitleDualComparisonCardsModernName, layoutDescription as TitleDualComparisonCardsModernDesc } from './neo-modern/TitleDualComparisonCards'; -import TitleHorizontalAltenenatingTimelineLayout, { Schema as TitleHorizontalAltenenatingTimelineSchema, layoutId as TitleHorizontalAltenenatingTimelineId, layoutName as TitleHorizontalAltenenatingTimelineName, layoutDescription as TitleHorizontalAltenenatingTimelineDesc } from './neo-modern/TitleHorizontalAlternatingTimeline'; -import TitleKpiSnapshotGridLayout, { Schema as TitleKpiSnapshotGridSchema, layoutId as TitleKpiSnapshotGridId, layoutName as TitleKpiSnapshotGridName, layoutDescription as TitleKpiSnapshotGridDesc } from './neo-modern/TitleKpiSnapshotGrid'; -import TitleSubtitlesChartLayout, { Schema as TitleSubtitlesChartSchema, layoutId as TitleSubtitlesChartId, layoutName as TitleSubtitlesChartName, layoutDescription as TitleSubtitlesChartDesc } from './neo-modern/TitleSubtitlesChart'; -import TitleTwoColumnNumberListLayout, { Schema as TitleTwoColumnNumberListSchema, layoutId as TitleTwoColumnNumberListId, layoutName as TitleTwoColumnNumberListName, layoutDescription as TitleTwoColumnNumberListDesc } from './neo-modern/TitleTwoColumnNumberedList'; -import TitleDescriptionMultiChartGridLayout, { Schema as TitleDescriptionMultiChartGridSchema, layoutId as TitleDescriptionMultiChartGridId, layoutName as TitleDescriptionMultiChartGridName, layoutDescription as TitleDescriptionMultiChartGridDesc } from './neo-modern/TitleDescriptionMultiChartGrid'; -import TitleDescriptionMultiChartGridWithMetricsModernLayout, { Schema as TitleDescriptionMultiChartGridWithMetricsModernSchema, layoutId as TitleDescriptionMultiChartGridWithMetricsModernId, layoutName as TitleDescriptionMultiChartGridWithMetricsModernName, layoutDescription as TitleDescriptionMultiChartGridWithMetricsModernDesc } from './neo-modern/TitleDescriptionMultiChartGridWithMetrics'; -import TitleDescriptionMultiChartGridWithBulletsModernLayout, { Schema as TitleDescriptionMultiChartGridWithBulletsModernSchema, layoutId as TitleDescriptionMultiChartGridWithBulletsModernId, layoutName as TitleDescriptionMultiChartGridWithBulletsModernName, layoutDescription as TitleDescriptionMultiChartGridWithBulletsModernDesc } from './neo-modern/TitleDescriptionMultiChartGridWithBullets'; - - - +import TitleDescriptionBulletListModernLayout, { + Schema as TitleDescriptionBulletListModernSchema, + layoutId as TitleDescriptionBulletListModernId, + layoutName as TitleDescriptionBulletListModernName, + layoutDescription as TitleDescriptionBulletListModernDesc, +} from "./neo-modern/TitleDescriptionBulletList"; +import TitleDescriptionContactListLayout, { + Schema as TitleDescriptionContactListSchema, + layoutId as TitleDescriptionContactListId, + layoutName as TitleDescriptionContactListName, + layoutDescription as TitleDescriptionContactListDesc, +} from "./neo-modern/TitleDescriptionContactList"; +import TitleDescriptionDualMetricsGridLayout, { + Schema as TitleDescriptionDualMetricsGridSchema, + layoutId as TitleDescriptionDualMetricsGridId, + layoutName as TitleDescriptionDualMetricsGridName, + layoutDescription as TitleDescriptionDualMetricsGridDesc, +} from "./neo-modern/TitleDescriptionDualMetricsGrid"; +import TitleDescriptionIconTimelineLayout, { + Schema as TitleDescriptionIconTimelineSchema, + layoutId as TitleDescriptionIconTimelineId, + layoutName as TitleDescriptionIconTimelineName, + layoutDescription as TitleDescriptionIconTimelineDesc, +} from "./neo-modern/TitleDescriptionIconTimeline"; +import TitleDescriptionImageRightModernLayout, { + Schema as TitleDescriptionImageRightModernSchema, + layoutId as TitleDescriptionImageRightModernId, + layoutName as TitleDescriptionImageRightModernName, + layoutDescription as TitleDescriptionImageRightModernDesc, +} from "./neo-modern/TitleDescriptionImageRight"; +import TitleDescriptionMetricsChartLayout, { + Schema as TitleDescriptionMetricsChartSchema, + layoutId as TitleDescriptionMetricsChartId, + layoutName as TitleDescriptionMetricsChartName, + layoutDescription as TitleDescriptionMetricsChartDesc, +} from "./neo-modern/TitleDescriptionMetricsChart"; +import TitleDescriptionMetricsImageLayout, { + Schema as TitleDescriptionMetricsImageSchema, + layoutId as TitleDescriptionMetricsImageId, + layoutName as TitleDescriptionMetricsImageName, + layoutDescription as TitleDescriptionMetricsImageDesc, +} from "./neo-modern/TitleDescriptionMetricsImage"; +import TitleDescriptionMetricsTableLayout, { + Schema as TitleDescriptionMetricsTableSchema, + layoutId as TitleDescriptionMetricsTableId, + layoutName as TitleDescriptionMetricsTableName, + layoutDescription as TitleDescriptionMetricsTableDesc, +} from "./neo-modern/TitleDescriptionTable"; +import TitleDualComparisonChartsLayout, { + Schema as TitleDualComparisonChartsSchema, + layoutId as TitleDualComparisonChartsId, + layoutName as TitleDualComparisonChartsName, + layoutDescription as TitleDualComparisonChartsDesc, +} from "./neo-modern/TitleDualComparisonCharts"; +import TitleDualComparisonCardsModernLayout, { + Schema as TitleDualComparisonCardsModernSchema, + layoutId as TitleDualComparisonCardsModernId, + layoutName as TitleDualComparisonCardsModernName, + layoutDescription as TitleDualComparisonCardsModernDesc, +} from "./neo-modern/TitleDualComparisonCards"; +import TitleHorizontalAltenenatingTimelineLayout, { + Schema as TitleHorizontalAltenenatingTimelineSchema, + layoutId as TitleHorizontalAltenenatingTimelineId, + layoutName as TitleHorizontalAltenenatingTimelineName, + layoutDescription as TitleHorizontalAltenenatingTimelineDesc, +} from "./neo-modern/TitleHorizontalAlternatingTimeline"; +import TitleKpiSnapshotGridLayout, { + Schema as TitleKpiSnapshotGridSchema, + layoutId as TitleKpiSnapshotGridId, + layoutName as TitleKpiSnapshotGridName, + layoutDescription as TitleKpiSnapshotGridDesc, +} from "./neo-modern/TitleKpiSnapshotGrid"; +import TitleSubtitlesChartLayout, { + Schema as TitleSubtitlesChartSchema, + layoutId as TitleSubtitlesChartId, + layoutName as TitleSubtitlesChartName, + layoutDescription as TitleSubtitlesChartDesc, +} from "./neo-modern/TitleSubtitlesChart"; +import TitleTwoColumnNumberListLayout, { + Schema as TitleTwoColumnNumberListSchema, + layoutId as TitleTwoColumnNumberListId, + layoutName as TitleTwoColumnNumberListName, + layoutDescription as TitleTwoColumnNumberListDesc, +} from "./neo-modern/TitleTwoColumnNumberedList"; +import TitleDescriptionMultiChartGridLayout, { + Schema as TitleDescriptionMultiChartGridSchema, + layoutId as TitleDescriptionMultiChartGridId, + layoutName as TitleDescriptionMultiChartGridName, + layoutDescription as TitleDescriptionMultiChartGridDesc, +} from "./neo-modern/TitleDescriptionMultiChartGrid"; +import TitleDescriptionMultiChartGridWithMetricsModernLayout, { + Schema as TitleDescriptionMultiChartGridWithMetricsModernSchema, + layoutId as TitleDescriptionMultiChartGridWithMetricsModernId, + layoutName as TitleDescriptionMultiChartGridWithMetricsModernName, + layoutDescription as TitleDescriptionMultiChartGridWithMetricsModernDesc, +} from "./neo-modern/TitleDescriptionMultiChartGridWithMetrics"; +import TitleDescriptionMultiChartGridWithBulletsModernLayout, { + Schema as TitleDescriptionMultiChartGridWithBulletsModernSchema, + layoutId as TitleDescriptionMultiChartGridWithBulletsModernId, + layoutName as TitleDescriptionMultiChartGridWithBulletsModernName, + layoutDescription as TitleDescriptionMultiChartGridWithBulletsModernDesc, +} from "./neo-modern/TitleDescriptionMultiChartGridWithBullets"; // Standard templates -import StandardIntroSlideLayout, { Schema as StandardIntroSchema, layoutId as StandardIntroId, layoutName as StandardIntroName, layoutDescription as StandardIntroDesc } from "./standard/IntroSlideLayout"; -import ChartLeftTextRightLayout, { Schema as ChartLeftSchema, layoutId as ChartLeftId, layoutName as ChartLeftName, layoutDescription as ChartLeftDesc } from "./standard/ChartLeftTextRightLayout"; -import ContactLayout, { Schema as ContactSchema, layoutId as ContactId, layoutName as ContactName, layoutDescription as ContactDesc } from "./standard/ContactLayout"; -import HeadingBulletImageDescriptionLayout, { Schema as HeadingBulletSchema, layoutId as HeadingBulletId, layoutName as HeadingBulletName, layoutDescription as HeadingBulletDesc } from "./standard/HeadingBulletImageDescriptionLayout"; -import IconBulletDescriptionLayout, { Schema as IconBulletSchema, layoutId as IconBulletId, layoutName as IconBulletName, layoutDescription as IconBulletDesc } from "./standard/IconBulletDescriptionLayout"; -import IconImageDescriptionLayout, { Schema as IconImageSchema, layoutId as IconImageId, layoutName as IconImageName, layoutDescription as IconImageDesc } from "./standard/IconImageDescriptionLayout"; -import StandardImageListWithDescriptionLayout, { Schema as StdImageListSchema, layoutId as StdImageListId, layoutName as StdImageListName, layoutDescription as StdImageListDesc } from "./standard/ImageListWithDescriptionLayout"; -import MetricsDescriptionLayout, { Schema as MetricsDescLayoutSchema, layoutId as MetricsDescLayoutId, layoutName as MetricsDescLayoutName, layoutDescription as MetricsDescLayoutDesc } from "./standard/MetricsDescriptionLayout"; -import NumberedBulletSingleImageLayout, { Schema as NumBulletImgSchema, layoutId as NumBulletImgId, layoutName as NumBulletImgName, layoutDescription as NumBulletImgDesc } from "./standard/NumberedBulletSingleImageLayout"; -import StandardTableOfContentsLayout, { Schema as StdTocSchema, layoutId as StdTocId, layoutName as StdTocName, layoutDescription as StdTocDesc } from "./standard/TableOfContentsLayout"; -import VisualMetricsSlideLayout, { Schema as VisualMetricsSchema, layoutId as VisualMetricsId, layoutName as VisualMetricsName, layoutDescription as VisualMetricsDesc } from "./standard/VisualMetricsSlideLayout"; +import StandardIntroSlideLayout, { + Schema as StandardIntroSchema, + layoutId as StandardIntroId, + layoutName as StandardIntroName, + layoutDescription as StandardIntroDesc, +} from "./standard/IntroSlideLayout"; +import ChartLeftTextRightLayout, { + Schema as ChartLeftSchema, + layoutId as ChartLeftId, + layoutName as ChartLeftName, + layoutDescription as ChartLeftDesc, +} from "./standard/ChartLeftTextRightLayout"; +import ContactLayout, { + Schema as ContactSchema, + layoutId as ContactId, + layoutName as ContactName, + layoutDescription as ContactDesc, +} from "./standard/ContactLayout"; +import HeadingBulletImageDescriptionLayout, { + Schema as HeadingBulletSchema, + layoutId as HeadingBulletId, + layoutName as HeadingBulletName, + layoutDescription as HeadingBulletDesc, +} from "./standard/HeadingBulletImageDescriptionLayout"; +import IconBulletDescriptionLayout, { + Schema as IconBulletSchema, + layoutId as IconBulletId, + layoutName as IconBulletName, + layoutDescription as IconBulletDesc, +} from "./standard/IconBulletDescriptionLayout"; +import IconImageDescriptionLayout, { + Schema as IconImageSchema, + layoutId as IconImageId, + layoutName as IconImageName, + layoutDescription as IconImageDesc, +} from "./standard/IconImageDescriptionLayout"; +import StandardImageListWithDescriptionLayout, { + Schema as StdImageListSchema, + layoutId as StdImageListId, + layoutName as StdImageListName, + layoutDescription as StdImageListDesc, +} from "./standard/ImageListWithDescriptionLayout"; +import MetricsDescriptionLayout, { + Schema as MetricsDescLayoutSchema, + layoutId as MetricsDescLayoutId, + layoutName as MetricsDescLayoutName, + layoutDescription as MetricsDescLayoutDesc, +} from "./standard/MetricsDescriptionLayout"; +import NumberedBulletSingleImageLayout, { + Schema as NumBulletImgSchema, + layoutId as NumBulletImgId, + layoutName as NumBulletImgName, + layoutDescription as NumBulletImgDesc, +} from "./standard/NumberedBulletSingleImageLayout"; +import StandardTableOfContentsLayout, { + Schema as StdTocSchema, + layoutId as StdTocId, + layoutName as StdTocName, + layoutDescription as StdTocDesc, +} from "./standard/TableOfContentsLayout"; +import VisualMetricsSlideLayout, { + Schema as VisualMetricsSchema, + layoutId as VisualMetricsId, + layoutName as VisualMetricsName, + layoutDescription as VisualMetricsDesc, +} from "./standard/VisualMetricsSlideLayout"; // Neo standard templates -import TitleBadgeChartLayout, { Schema as TitleBadgeChartSchema, layoutId as TitleBadgeChartId, layoutName as TitleBadgeChartName, layoutDescription as TitleBadgeChartDesc } from './neo-standard/TitleBadgeChart'; -import TitleDescriptionBulletListStandardLayout, { Schema as TitleDescriptionBulletListStandardSchema, layoutId as TitleDescriptionBulletListStandardId, layoutName as TitleDescriptionBulletListStandardName, layoutDescription as TitleDescriptionBulletListStandardDesc } from './neo-standard/TitleDescriptionBulletList'; -import TitleDescriptionContactCardsLayout, { Schema as TitleDescriptionContactCardsSchema, layoutId as TitleDescriptionContactCardsId, layoutName as TitleDescriptionContactCardsName, layoutDescription as TitleDescriptionContactCardsDesc } from './neo-standard/TitleDescriptionContactCards'; -import TitleDescriptionIconListLayout, { Schema as TitleDescriptionIconListSchema, layoutId as TitleDescriptionIconListId, layoutName as TitleDescriptionIconListName, layoutDescription as TitleDescriptionIconListDesc } from './neo-standard/TitleDescriptionIconList'; -import TitleDescriptionImageRightLayout, { Schema as TitleDescriptionImageRightSchema, layoutId as TitleDescriptionImageRightId, layoutName as TitleDescriptionImageRightName, layoutDescription as TitleDescriptionImageRightDesc } from './neo-standard/TitleDescriptionImageRight'; -import TitleDescriptionRadialCardsLayout, { Schema as TitleDescriptionRadialCardsSchema, layoutId as TitleDescriptionRadialCardsId, layoutName as TitleDescriptionRadialCardsName, layoutDescription as TitleDescriptionRadialCardsDesc } from './neo-standard/TitleDescriptionRadialCards'; -import TitleDescriptionTableLayout, { Schema as TitleDescriptionTableSchema, layoutId as TitleDescriptionTableId, layoutName as TitleDescriptionTableName, layoutDescription as TitleDescriptionTableDesc } from './neo-standard/TitleDescriptionTable'; -import TitleDescriptionTimelineLayout, { Schema as TitleDescriptionTimelineSchema, layoutId as TitleDescriptionTimelineId, layoutName as TitleDescriptionTimelineName, layoutDescription as TitleDescriptionTimelineDesc } from './neo-standard/TitleDescriptionTimeline'; -import TitleDualChartsComparisonLayout, { Schema as TitleDualChartsComparisonSchema, layoutId as TitleDualChartsComparisonId, layoutName as TitleDualChartsComparisonName, layoutDescription as TitleDualChartsComparisonDesc } from './neo-standard/TitleDualChartsComparison'; -import TitleDualComparisonCardsLayout, { Schema as TitleDualComparisonCardsSchema, layoutId as TitleDualComparisonCardsId, layoutName as TitleDualComparisonCardsName, layoutDescription as TitleDualComparisonCardsDesc } from './neo-standard/TitleDualComparisonCards'; -import TitleKpiGridLayout, { Schema as TitleKpiGridSchema, layoutId as TitleKpiGridId, layoutName as TitleKpiGridName, layoutDescription as TitleKpiGridDesc } from './neo-standard/TitleKpiGrid'; -import TitleMetricsChartLayout, { Schema as TitleMetricsChartSchema, layoutId as TitleMetricsChartId, layoutName as TitleMetricsChartName, layoutDescription as TitleMetricsChartDesc } from './neo-standard/TitleMetricsChart'; -import TitleMetricsImageLayout, { Schema as TitleMetricsImageSchema, layoutId as TitleMetricsImageId, layoutName as TitleMetricsImageName, layoutDescription as TitleMetricsImageDesc } from './neo-standard/TitleMetricsImage'; -import TitlePointsDonutGridLayout, { Schema as TitlePointsDonutGridSchema, layoutId as TitlePointsDonutGridId, layoutName as TitlePointsDonutGridName, layoutDescription as TitlePointsDonutGridDesc } from './neo-standard/TitlePointsDonutGrid'; -import TitleDescriptionMultiChartGridStandardLayout, { Schema as TitleDescriptionMultiChartGridStandardSchema, layoutId as TitleDescriptionMultiChartGridStandardId, layoutName as TitleDescriptionMultiChartGridStandardName, layoutDescription as TitleDescriptionMultiChartGridStandardDesc } from './neo-standard/TitleDescriptionMultiChartGrid'; -import TitleDescriptionMultiChartGridWithMetricsStandardLayout, { Schema as TitleDescriptionMultiChartGridWithMetricsStandardSchema, layoutId as TitleDescriptionMultiChartGridWithMetricsStandardId, layoutName as TitleDescriptionMultiChartGridWithMetricsStandardName, layoutDescription as TitleDescriptionMultiChartGridWithMetricsStandardDesc } from './neo-standard/TitleDescriptionMultiChartGridWithMetrics'; -import TitleDescriptionMultiChartGridWithBulletsStandardLayout, { Schema as TitleDescriptionMultiChartGridWithBulletsStandardSchema, layoutId as TitleDescriptionMultiChartGridWithBulletsStandardId, layoutName as TitleDescriptionMultiChartGridWithBulletsStandardName, layoutDescription as TitleDescriptionMultiChartGridWithBulletsStandardDesc } from './neo-standard/TitleDescriptionMultiChartGridWithBullets'; - - - - - +import TitleBadgeChartLayout, { + Schema as TitleBadgeChartSchema, + layoutId as TitleBadgeChartId, + layoutName as TitleBadgeChartName, + layoutDescription as TitleBadgeChartDesc, +} from "./neo-standard/TitleBadgeChart"; +import TitleDescriptionBulletListStandardLayout, { + Schema as TitleDescriptionBulletListStandardSchema, + layoutId as TitleDescriptionBulletListStandardId, + layoutName as TitleDescriptionBulletListStandardName, + layoutDescription as TitleDescriptionBulletListStandardDesc, +} from "./neo-standard/TitleDescriptionBulletList"; +import TitleDescriptionContactCardsLayout, { + Schema as TitleDescriptionContactCardsSchema, + layoutId as TitleDescriptionContactCardsId, + layoutName as TitleDescriptionContactCardsName, + layoutDescription as TitleDescriptionContactCardsDesc, +} from "./neo-standard/TitleDescriptionContactCards"; +import TitleDescriptionIconListLayout, { + Schema as TitleDescriptionIconListSchema, + layoutId as TitleDescriptionIconListId, + layoutName as TitleDescriptionIconListName, + layoutDescription as TitleDescriptionIconListDesc, +} from "./neo-standard/TitleDescriptionIconList"; +import TitleDescriptionImageRightLayout, { + Schema as TitleDescriptionImageRightSchema, + layoutId as TitleDescriptionImageRightId, + layoutName as TitleDescriptionImageRightName, + layoutDescription as TitleDescriptionImageRightDesc, +} from "./neo-standard/TitleDescriptionImageRight"; +import TitleDescriptionRadialCardsLayout, { + Schema as TitleDescriptionRadialCardsSchema, + layoutId as TitleDescriptionRadialCardsId, + layoutName as TitleDescriptionRadialCardsName, + layoutDescription as TitleDescriptionRadialCardsDesc, +} from "./neo-standard/TitleDescriptionRadialCards"; +import TitleDescriptionTableLayout, { + Schema as TitleDescriptionTableSchema, + layoutId as TitleDescriptionTableId, + layoutName as TitleDescriptionTableName, + layoutDescription as TitleDescriptionTableDesc, +} from "./neo-standard/TitleDescriptionTable"; +import TitleDescriptionTimelineLayout, { + Schema as TitleDescriptionTimelineSchema, + layoutId as TitleDescriptionTimelineId, + layoutName as TitleDescriptionTimelineName, + layoutDescription as TitleDescriptionTimelineDesc, +} from "./neo-standard/TitleDescriptionTimeline"; +import TitleDualChartsComparisonLayout, { + Schema as TitleDualChartsComparisonSchema, + layoutId as TitleDualChartsComparisonId, + layoutName as TitleDualChartsComparisonName, + layoutDescription as TitleDualChartsComparisonDesc, +} from "./neo-standard/TitleDualChartsComparison"; +import TitleDualComparisonCardsLayout, { + Schema as TitleDualComparisonCardsSchema, + layoutId as TitleDualComparisonCardsId, + layoutName as TitleDualComparisonCardsName, + layoutDescription as TitleDualComparisonCardsDesc, +} from "./neo-standard/TitleDualComparisonCards"; +import TitleKpiGridLayout, { + Schema as TitleKpiGridSchema, + layoutId as TitleKpiGridId, + layoutName as TitleKpiGridName, + layoutDescription as TitleKpiGridDesc, +} from "./neo-standard/TitleKpiGrid"; +import TitleMetricsChartLayout, { + Schema as TitleMetricsChartSchema, + layoutId as TitleMetricsChartId, + layoutName as TitleMetricsChartName, + layoutDescription as TitleMetricsChartDesc, +} from "./neo-standard/TitleMetricsChart"; +import TitleMetricsImageLayout, { + Schema as TitleMetricsImageSchema, + layoutId as TitleMetricsImageId, + layoutName as TitleMetricsImageName, + layoutDescription as TitleMetricsImageDesc, +} from "./neo-standard/TitleMetricsImage"; +import TitlePointsDonutGridLayout, { + Schema as TitlePointsDonutGridSchema, + layoutId as TitlePointsDonutGridId, + layoutName as TitlePointsDonutGridName, + layoutDescription as TitlePointsDonutGridDesc, +} from "./neo-standard/TitlePointsDonutGrid"; +import TitleDescriptionMultiChartGridStandardLayout, { + Schema as TitleDescriptionMultiChartGridStandardSchema, + layoutId as TitleDescriptionMultiChartGridStandardId, + layoutName as TitleDescriptionMultiChartGridStandardName, + layoutDescription as TitleDescriptionMultiChartGridStandardDesc, +} from "./neo-standard/TitleDescriptionMultiChartGrid"; +import TitleDescriptionMultiChartGridWithMetricsStandardLayout, { + Schema as TitleDescriptionMultiChartGridWithMetricsStandardSchema, + layoutId as TitleDescriptionMultiChartGridWithMetricsStandardId, + layoutName as TitleDescriptionMultiChartGridWithMetricsStandardName, + layoutDescription as TitleDescriptionMultiChartGridWithMetricsStandardDesc, +} from "./neo-standard/TitleDescriptionMultiChartGridWithMetrics"; +import TitleDescriptionMultiChartGridWithBulletsStandardLayout, { + Schema as TitleDescriptionMultiChartGridWithBulletsStandardSchema, + layoutId as TitleDescriptionMultiChartGridWithBulletsStandardId, + layoutName as TitleDescriptionMultiChartGridWithBulletsStandardName, + layoutDescription as TitleDescriptionMultiChartGridWithBulletsStandardDesc, +} from "./neo-standard/TitleDescriptionMultiChartGridWithBullets"; // Swift templates -import SwiftIntroSlideLayout, { Schema as SwiftIntroSchema, layoutId as SwiftIntroId, layoutName as SwiftIntroName, layoutDescription as SwiftIntroDesc } from "./swift/IntroSlideLayout"; -import BulletsWithIconsTitleDescription, { Schema as BulletsIconsTitleSchema, layoutId as BulletsIconsTitleId, layoutName as BulletsIconsTitleName, layoutDescription as BulletsIconsTitleDesc } from "./swift/BulletsWithIconsTitleDescription"; -import IconBulletListDescription, { Schema as IconBulletListSchema, layoutId as IconBulletListId, layoutName as IconBulletListName, layoutDescription as IconBulletListDesc } from "./swift/IconBulletListDescription"; -import ImageListDescription, { Schema as ImageListSchema, layoutId as ImageListId, layoutName as ImageListName, layoutDescription as ImageListDesc } from "./swift/ImageListDescription"; -import MetricsNumbers, { Schema as MetricsNumbersSchema, layoutId as MetricsNumbersId, layoutName as MetricsNumbersName, layoutDescription as MetricsNumbersDesc } from "./swift/MetricsNumbers"; -import SimpleBulletPointsLayout, { Schema as SimpleBulletSchema, layoutId as SimpleBulletId, layoutName as SimpleBulletName, layoutDescription as SimpleBulletDesc } from "./swift/SimpleBulletPointsLayout"; -import SwiftTableOfContents, { Schema as SwiftTocSchema, layoutId as SwiftTocId, layoutName as SwiftTocName, layoutDescription as SwiftTocDesc } from "./swift/TableOfContents"; -import TableorChart, { Schema as TableChartSchema, layoutId as TableChartId, layoutName as TableChartName, layoutDescription as TableChartDesc } from "./swift/TableorChart"; -import Timeline, { Schema as TimelineSchema, layoutId as TimelineId, layoutName as TimelineName, layoutDescription as TimelineDesc } from "./swift/Timeline"; +import SwiftIntroSlideLayout, { + Schema as SwiftIntroSchema, + layoutId as SwiftIntroId, + layoutName as SwiftIntroName, + layoutDescription as SwiftIntroDesc, +} from "./swift/IntroSlideLayout"; +import BulletsWithIconsTitleDescription, { + Schema as BulletsIconsTitleSchema, + layoutId as BulletsIconsTitleId, + layoutName as BulletsIconsTitleName, + layoutDescription as BulletsIconsTitleDesc, +} from "./swift/BulletsWithIconsTitleDescription"; +import IconBulletListDescription, { + Schema as IconBulletListSchema, + layoutId as IconBulletListId, + layoutName as IconBulletListName, + layoutDescription as IconBulletListDesc, +} from "./swift/IconBulletListDescription"; +import ImageListDescription, { + Schema as ImageListSchema, + layoutId as ImageListId, + layoutName as ImageListName, + layoutDescription as ImageListDesc, +} from "./swift/ImageListDescription"; +import MetricsNumbers, { + Schema as MetricsNumbersSchema, + layoutId as MetricsNumbersId, + layoutName as MetricsNumbersName, + layoutDescription as MetricsNumbersDesc, +} from "./swift/MetricsNumbers"; +import SimpleBulletPointsLayout, { + Schema as SimpleBulletSchema, + layoutId as SimpleBulletId, + layoutName as SimpleBulletName, + layoutDescription as SimpleBulletDesc, +} from "./swift/SimpleBulletPointsLayout"; +import SwiftTableOfContents, { + Schema as SwiftTocSchema, + layoutId as SwiftTocId, + layoutName as SwiftTocName, + layoutDescription as SwiftTocDesc, +} from "./swift/TableOfContents"; +import TableorChart, { + Schema as TableChartSchema, + layoutId as TableChartId, + layoutName as TableChartName, + layoutDescription as TableChartDesc, +} from "./swift/TableorChart"; +import Timeline, { + Schema as TimelineSchema, + layoutId as TimelineId, + layoutName as TimelineName, + layoutDescription as TimelineDesc, +} from "./swift/Timeline"; // neo swift templates -import TitleCenteredChartLayout, { Schema as TitleCenteredChartSchema, layoutId as TitleCenteredChartId, layoutName as TitleCenteredChartName, layoutDescription as TitleCenteredChartDesc } from './neo-swift/TitleCenteredChart'; -import TitleChartMetricsSidebarLayout, { Schema as TitleChartMetricsSidebarSchema, layoutId as TitleChartMetricsSidebarId, layoutName as TitleChartMetricsSidebarName, layoutDescription as TitleChartMetricsSidebarDesc } from './neo-swift/TitleChartMetricsSidebar'; -import TitleDescriptionBulletListLayout, { Schema as TitleDescriptionBulletListSchema, layoutId as TitleDescriptionBulletListId, layoutName as TitleDescriptionBulletListName, layoutDescription as TitleDescriptionBulletListDesc } from './neo-swift/TitleDescriptionBulletList'; -import TitleDescriptionDataTableLayout, { Schema as TitleDescriptionDataTableSchema, layoutId as TitleDescriptionDataTableId, layoutName as TitleDescriptionDataTableName, layoutDescription as TitleDescriptionDataTableDesc } from './neo-swift/TitleDescriptionDataTable'; -import TitleDescriptionImageRightSwiftLayout, { Schema as TitleDescriptionImageRightSwiftSchema, layoutId as TitleDescriptionImageRightSwiftId, layoutName as TitleDescriptionImageRightSwiftName, layoutDescription as TitleDescriptionImageRightSwiftDesc } from './neo-swift/TitleDescriptionImageRight'; - -import TitleDescriptionMetricsGridLayout, { Schema as TitleDescriptionMetricsGridSchema, layoutId as TitleDescriptionMetricsGridId, layoutName as TitleDescriptionMetricsGridName, layoutDescription as TitleDescriptionMetricsGridDesc } from './neo-swift/TitleDescriptionMetricsGrid'; -import TitleDescriptionMetricsGridImageLayout, { Schema as TitleDescriptionMetricsGridImageSchema, layoutId as TitleDescriptionMetricsGridImageId, layoutName as TitleDescriptionMetricsGridImageName, layoutDescription as TitleDescriptionMetricsGridImageDesc } from './neo-swift/TitleDescriptionMetricsGridImage'; -import TitleDualComparisionBlockLayout, { Schema as TitleDualComparisionBlockSchema, layoutId as TitleDualComparisionBlockId, layoutName as TitleDualComparisionBlockName, layoutDescription as TitleDualComparisionBlockDesc } from './neo-swift/TitleDualComparisonBlocks'; -import TitleLabelDescriptionStatCardsLayout, { Schema as TitleLabelDescriptionStatCardsSchema, layoutId as TitleLabelDescriptionStatCardsId, layoutName as TitleLabelDescriptionStatCardsName, layoutDescription as TitleLabelDescriptionStatCardsDesc } from './neo-swift/TitleLabelDescriptionStatCards'; -import TitleSubtitleTeamMemberCardsLayout, { Schema as TitleSubtitleTeamMemberCardsSchema, layoutId as TitleSubtitleTeamMemberCardsId, layoutName as TitleSubtitleTeamMemberCardsName, layoutDescription as TitleSubtitleTeamMemberCardsDesc } from './neo-swift/TitleSubtitleTeamMemberCards'; -import TitleTaglineDescriptionNumberedStepsLayout, { Schema as TitleTaglineDescriptionNumberedStepsSchema, layoutId as TitleTaglineDescriptionNumberedStepsId, layoutName as TitleTaglineDescriptionNumberedStepsName, layoutDescription as TitleTaglineDescriptionNumberedStepsDesc } from './neo-swift/TitleTaglineDescriptionNumberedSteps'; -import TitleThreeByThreeMetricsGridLayout, { Schema as TitleThreeByThreeMetricsGridSchema, layoutId as TitleThreeByThreeMetricsGridId, layoutName as TitleThreeByThreeMetricsGridName, layoutDescription as TitleThreeByThreeMetricsGridDesc } from './neo-swift/TitleThreeByThreeMetricsGrid'; -import TitleDescriptionSixChartsGridLayout, { Schema as TitleDescriptionSixChartsGridSchema, layoutId as TitleDescriptionSixChartsGridId, layoutName as TitleDescriptionSixChartsGridName, layoutDescription as TitleDescriptionSixChartsGridDesc } from './neo-swift/TitleDescriptionSixChartsGrid'; -import TitleDescriptionSixChartsFourMetricsLayout, { Schema as TitleDescriptionSixChartsFourMetricsSchema, layoutId as TitleDescriptionSixChartsFourMetricsId, layoutName as TitleDescriptionSixChartsFourMetricsName, layoutDescription as TitleDescriptionSixChartsFourMetricsDesc } from './neo-swift/TitleDescriptionSixChartsFourMetrics'; -import TitleDescriptionFourChartsSixBulletsLayout, { Schema as TitleDescriptionFourChartsSixBulletsSchema, layoutId as TitleDescriptionFourChartsSixBulletsId, layoutName as TitleDescriptionFourChartsSixBulletsName, layoutDescription as TitleDescriptionFourChartsSixBulletsDesc } from './neo-swift/TitleDescriptionFourChartsSixBullets'; - - - - +import TitleCenteredChartLayout, { + Schema as TitleCenteredChartSchema, + layoutId as TitleCenteredChartId, + layoutName as TitleCenteredChartName, + layoutDescription as TitleCenteredChartDesc, +} from "./neo-swift/TitleCenteredChart"; +import TitleChartMetricsSidebarLayout, { + Schema as TitleChartMetricsSidebarSchema, + layoutId as TitleChartMetricsSidebarId, + layoutName as TitleChartMetricsSidebarName, + layoutDescription as TitleChartMetricsSidebarDesc, +} from "./neo-swift/TitleChartMetricsSidebar"; +import TitleDescriptionBulletListLayout, { + Schema as TitleDescriptionBulletListSchema, + layoutId as TitleDescriptionBulletListId, + layoutName as TitleDescriptionBulletListName, + layoutDescription as TitleDescriptionBulletListDesc, +} from "./neo-swift/TitleDescriptionBulletList"; +import TitleDescriptionDataTableLayout, { + Schema as TitleDescriptionDataTableSchema, + layoutId as TitleDescriptionDataTableId, + layoutName as TitleDescriptionDataTableName, + layoutDescription as TitleDescriptionDataTableDesc, +} from "./neo-swift/TitleDescriptionDataTable"; +import TitleDescriptionImageRightSwiftLayout, { + Schema as TitleDescriptionImageRightSwiftSchema, + layoutId as TitleDescriptionImageRightSwiftId, + layoutName as TitleDescriptionImageRightSwiftName, + layoutDescription as TitleDescriptionImageRightSwiftDesc, +} from "./neo-swift/TitleDescriptionImageRight"; +import TitleDescriptionMetricsGridLayout, { + Schema as TitleDescriptionMetricsGridSchema, + layoutId as TitleDescriptionMetricsGridId, + layoutName as TitleDescriptionMetricsGridName, + layoutDescription as TitleDescriptionMetricsGridDesc, +} from "./neo-swift/TitleDescriptionMetricsGrid"; +import TitleDescriptionMetricsGridImageLayout, { + Schema as TitleDescriptionMetricsGridImageSchema, + layoutId as TitleDescriptionMetricsGridImageId, + layoutName as TitleDescriptionMetricsGridImageName, + layoutDescription as TitleDescriptionMetricsGridImageDesc, +} from "./neo-swift/TitleDescriptionMetricsGridImage"; +import TitleDualComparisionBlockLayout, { + Schema as TitleDualComparisionBlockSchema, + layoutId as TitleDualComparisionBlockId, + layoutName as TitleDualComparisionBlockName, + layoutDescription as TitleDualComparisionBlockDesc, +} from "./neo-swift/TitleDualComparisonBlocks"; +import TitleLabelDescriptionStatCardsLayout, { + Schema as TitleLabelDescriptionStatCardsSchema, + layoutId as TitleLabelDescriptionStatCardsId, + layoutName as TitleLabelDescriptionStatCardsName, + layoutDescription as TitleLabelDescriptionStatCardsDesc, +} from "./neo-swift/TitleLabelDescriptionStatCards"; +import TitleSubtitleTeamMemberCardsLayout, { + Schema as TitleSubtitleTeamMemberCardsSchema, + layoutId as TitleSubtitleTeamMemberCardsId, + layoutName as TitleSubtitleTeamMemberCardsName, + layoutDescription as TitleSubtitleTeamMemberCardsDesc, +} from "./neo-swift/TitleSubtitleTeamMemberCards"; +import TitleTaglineDescriptionNumberedStepsLayout, { + Schema as TitleTaglineDescriptionNumberedStepsSchema, + layoutId as TitleTaglineDescriptionNumberedStepsId, + layoutName as TitleTaglineDescriptionNumberedStepsName, + layoutDescription as TitleTaglineDescriptionNumberedStepsDesc, +} from "./neo-swift/TitleTaglineDescriptionNumberedSteps"; +import TitleThreeByThreeMetricsGridLayout, { + Schema as TitleThreeByThreeMetricsGridSchema, + layoutId as TitleThreeByThreeMetricsGridId, + layoutName as TitleThreeByThreeMetricsGridName, + layoutDescription as TitleThreeByThreeMetricsGridDesc, +} from "./neo-swift/TitleThreeByThreeMetricsGrid"; +import TitleDescriptionSixChartsGridLayout, { + Schema as TitleDescriptionSixChartsGridSchema, + layoutId as TitleDescriptionSixChartsGridId, + layoutName as TitleDescriptionSixChartsGridName, + layoutDescription as TitleDescriptionSixChartsGridDesc, +} from "./neo-swift/TitleDescriptionSixChartsGrid"; +import TitleDescriptionSixChartsFourMetricsLayout, { + Schema as TitleDescriptionSixChartsFourMetricsSchema, + layoutId as TitleDescriptionSixChartsFourMetricsId, + layoutName as TitleDescriptionSixChartsFourMetricsName, + layoutDescription as TitleDescriptionSixChartsFourMetricsDesc, +} from "./neo-swift/TitleDescriptionSixChartsFourMetrics"; +import TitleDescriptionFourChartsSixBulletsLayout, { + Schema as TitleDescriptionFourChartsSixBulletsSchema, + layoutId as TitleDescriptionFourChartsSixBulletsId, + layoutName as TitleDescriptionFourChartsSixBulletsName, + layoutDescription as TitleDescriptionFourChartsSixBulletsDesc, +} from "./neo-swift/TitleDescriptionFourChartsSixBullets"; // TODO: Step 2: Import template settings Here (like the ones below) // Template template settings @@ -236,374 +1133,1837 @@ import codeSettings from "./Code/settings.json"; import educationSettings from "./Education/settings.json"; import productOverviewSettings from "./ProductOverview/settings.json"; import reportSettings from "./Report/settings.json"; - +import pitchDeckSettings from "./pitch-deck/settings.json"; // Helper to create template entry - // TODO: Step 3: Create template entries for each template (like the ones below) export const codeTemplates: TemplateWithData[] = [ - createTemplateEntry(CodeSlide01RoadmapCover, CodeRoadmapCoverSchema, CodeRoadmapCoverId, CodeRoadmapCoverName, CodeRoadmapCoverDesc, "code", "CoverSlide"), - createTemplateEntry(CodeSlide02CodeExplanationSplit, CodeExplanationSplitSchema, CodeExplanationSplitId, CodeExplanationSplitName, CodeExplanationSplitDesc, "code", "CodeExplanationSplitSlide"), - createTemplateEntry(CodeSlide03ApiRequestResponse, CodeApiRequestResponseSchema, CodeApiRequestResponseId, CodeApiRequestResponseName, CodeApiRequestResponseDesc, "code", "APIRequestResponseSlide"), - createTemplateEntry(CodeSlide04FeatureGrid, CodeFeatureGridSchema, CodeFeatureGridId, CodeFeatureGridName, CodeFeatureGridDesc, "code", "CardsGridSlide"), - createTemplateEntry(CodeSlide05ComparisonTable, CodeComparisonTableSchema, CodeComparisonTableId, CodeComparisonTableName, CodeComparisonTableDesc, "code", "TableSlide"), - createTemplateEntry(CodeSlide06Workflow, CodeWorkflowSchema, CodeWorkflowId, CodeWorkflowName, CodeWorkflowDesc, "code", "WorkflowSlide"), - createTemplateEntry(CodeSlide07UseCaseList, CodeUseCaseListSchema, CodeUseCaseListId, CodeUseCaseListName, CodeUseCaseListDesc, "code", "TwoColumnBulletListSlide"), - createTemplateEntry(CodeSlide08CodeExplanationText, CodeExplanationTextSchema, CodeExplanationTextId, CodeExplanationTextName, CodeExplanationTextDesc, "code", "DescriptionTextSlide"), - createTemplateEntry(CodeSlide09TableOfContent, CodeTableOfContentSchema, CodeTableOfContentId, CodeTableOfContentName, CodeTableOfContentDesc, "code", "TableOfContentSlide"), - createTemplateEntry(CodeSlide10MetricsSplit, CodeMetricsSplitSchema, CodeMetricsSplitId, CodeMetricsSplitName, CodeMetricsSplitDesc, "code", "DescriptionAndMetricsSlide"), - createTemplateEntry(CodeSlide11MetricsGrid, CodeMetricsGridSchema, CodeMetricsGridId, CodeMetricsGridName, CodeMetricsGridDesc, "code", "MetricsGridSlide"), + createTemplateEntry( + CodeSlide01RoadmapCover, + CodeRoadmapCoverSchema, + CodeRoadmapCoverId, + CodeRoadmapCoverName, + CodeRoadmapCoverDesc, + "code", + "CoverSlide" + ), + createTemplateEntry( + CodeSlide02CodeExplanationSplit, + CodeExplanationSplitSchema, + CodeExplanationSplitId, + CodeExplanationSplitName, + CodeExplanationSplitDesc, + "code", + "CodeExplanationSplitSlide" + ), + createTemplateEntry( + CodeSlide03ApiRequestResponse, + CodeApiRequestResponseSchema, + CodeApiRequestResponseId, + CodeApiRequestResponseName, + CodeApiRequestResponseDesc, + "code", + "APIRequestResponseSlide" + ), + createTemplateEntry( + CodeSlide04FeatureGrid, + CodeFeatureGridSchema, + CodeFeatureGridId, + CodeFeatureGridName, + CodeFeatureGridDesc, + "code", + "CardsGridSlide" + ), + createTemplateEntry( + CodeSlide05ComparisonTable, + CodeComparisonTableSchema, + CodeComparisonTableId, + CodeComparisonTableName, + CodeComparisonTableDesc, + "code", + "TableSlide" + ), + createTemplateEntry( + CodeSlide06Workflow, + CodeWorkflowSchema, + CodeWorkflowId, + CodeWorkflowName, + CodeWorkflowDesc, + "code", + "WorkflowSlide" + ), + createTemplateEntry( + CodeSlide07UseCaseList, + CodeUseCaseListSchema, + CodeUseCaseListId, + CodeUseCaseListName, + CodeUseCaseListDesc, + "code", + "TwoColumnBulletListSlide" + ), + createTemplateEntry( + CodeSlide08CodeExplanationText, + CodeExplanationTextSchema, + CodeExplanationTextId, + CodeExplanationTextName, + CodeExplanationTextDesc, + "code", + "DescriptionTextSlide" + ), + createTemplateEntry( + CodeSlide09TableOfContent, + CodeTableOfContentSchema, + CodeTableOfContentId, + CodeTableOfContentName, + CodeTableOfContentDesc, + "code", + "TableOfContentSlide" + ), + createTemplateEntry( + CodeSlide10MetricsSplit, + CodeMetricsSplitSchema, + CodeMetricsSplitId, + CodeMetricsSplitName, + CodeMetricsSplitDesc, + "code", + "DescriptionAndMetricsSlide" + ), + createTemplateEntry( + CodeSlide11MetricsGrid, + CodeMetricsGridSchema, + CodeMetricsGridId, + CodeMetricsGridName, + CodeMetricsGridDesc, + "code", + "MetricsGridSlide" + ), ]; export const educationTemplates: TemplateWithData[] = [ - createTemplateEntry(EducationCoverSlide, EduCoverSchema, EduCoverId, EduCoverName, EduCoverDesc, "education", "EducationCoverSlide"), - createTemplateEntry(EducationTableOfContentsSlide, EduTocSchema, EduTocId, EduTocName, EduTocDesc, "education", "EducationTableOfContentsSlide"), - createTemplateEntry(EducationAboutSlide, EduAboutSchema, EduAboutId, EduAboutName, EduAboutDesc, "education", "EducationAboutSlide"), - createTemplateEntry(EducationContentSplitSlide, EduContentSplitSchema, EduContentSplitId, EduContentSplitName, EduContentSplitDesc, "education", "EducationContentSplitSlide"), - createTemplateEntry(EducationImageGallerySlide, EduImageGallerySchema, EduImageGalleryId, EduImageGalleryName, EduImageGalleryDesc, "education", "EducationImageGallerySlide"), - createTemplateEntry(EducationReportDonutSlide, EduReportDonutSchema, EduReportDonutId, EduReportDonutName, EduReportDonutDesc, "education", "EducationReportDonutSlide"), - createTemplateEntry(EducationServicesSplitSlide, EduServicesSplitSchema, EduServicesSplitId, EduServicesSplitName, EduServicesSplitDesc, "education", "EducationServicesSplitSlide"), - createTemplateEntry(EducationStatisticsGridSlide, EduStatisticsGridSchema, EduStatisticsGridId, EduStatisticsGridName, EduStatisticsGridDesc, "education", "EducationStatisticsGridSlide"), - createTemplateEntry(EducationTimelineSlide, EduTimelineSchema, EduTimelineId, EduTimelineName, EduTimelineDesc, "education", "EducationTimelineSlide"), + createTemplateEntry( + EducationCoverSlide, + EduCoverSchema, + EduCoverId, + EduCoverName, + EduCoverDesc, + "education", + "EducationCoverSlide" + ), + createTemplateEntry( + EducationTableOfContentsSlide, + EduTocSchema, + EduTocId, + EduTocName, + EduTocDesc, + "education", + "EducationTableOfContentsSlide" + ), + createTemplateEntry( + EducationAboutSlide, + EduAboutSchema, + EduAboutId, + EduAboutName, + EduAboutDesc, + "education", + "EducationAboutSlide" + ), + createTemplateEntry( + EducationContentSplitSlide, + EduContentSplitSchema, + EduContentSplitId, + EduContentSplitName, + EduContentSplitDesc, + "education", + "EducationContentSplitSlide" + ), + createTemplateEntry( + EducationImageGallerySlide, + EduImageGallerySchema, + EduImageGalleryId, + EduImageGalleryName, + EduImageGalleryDesc, + "education", + "EducationImageGallerySlide" + ), + createTemplateEntry( + EducationReportDonutSlide, + EduReportDonutSchema, + EduReportDonutId, + EduReportDonutName, + EduReportDonutDesc, + "education", + "EducationReportDonutSlide" + ), + createTemplateEntry( + EducationServicesSplitSlide, + EduServicesSplitSchema, + EduServicesSplitId, + EduServicesSplitName, + EduServicesSplitDesc, + "education", + "EducationServicesSplitSlide" + ), + createTemplateEntry( + EducationStatisticsGridSlide, + EduStatisticsGridSchema, + EduStatisticsGridId, + EduStatisticsGridName, + EduStatisticsGridDesc, + "education", + "EducationStatisticsGridSlide" + ), + createTemplateEntry( + EducationTimelineSlide, + EduTimelineSchema, + EduTimelineId, + EduTimelineName, + EduTimelineDesc, + "education", + "EducationTimelineSlide" + ), ]; export const productOverviewTemplates: TemplateWithData[] = [ - createTemplateEntry(CoverSlide, PoCoverSchema, PoCoverId, PoCoverName, PoCoverDesc, "product-overview", "CoverSlide"), - createTemplateEntry(TableOfContentSlide, PoTableOfContentSchema, PoTableOfContentId, PoTableOfContentName, PoTableOfContentDesc, "product-overview", "TableOfContentSlide"), - createTemplateEntry(IntroductionSlide, PoIntroductionSchema, PoIntroductionId, PoIntroductionName, PoIntroductionDesc, "product-overview", "IntroductionSlide"), - createTemplateEntry(MissionVisionSlide, PoMissionVisionSchema, PoMissionVisionId, PoMissionVisionName, PoMissionVisionDesc, "product-overview", "MissionVisionSlide"), - // createTemplateEntry(MarketOpportunitySlide, PoMarketOpportunitySchema, PoMarketOpportunityId, PoMarketOpportunityName, PoMarketOpportunityDesc, "product-overview", "MarketOpportunitySlide"), - createTemplateEntry(BusinessChallengesGridSlide, PoBizChallengesGridSchema, PoBizChallengesGridId, PoBizChallengesGridName, PoBizChallengesGridDesc, "product-overview", "BusinessChallengesGridSlide"), - createTemplateEntry(BusinessChallengesCardsSlide, PoBizChallengesCardsSchema, PoBizChallengesCardsId, PoBizChallengesCardsName, PoBizChallengesCardsDesc, "product-overview", "BusinessChallengesCardsSlide"), - createTemplateEntry(OurServicesSlide, PoOurServicesSchema, PoOurServicesId, PoOurServicesName, PoOurServicesDesc, "product-overview", "OurServicesSlide"), - createTemplateEntry(ProcessSlide, PoProcessSchema, PoProcessId, PoProcessName, PoProcessDesc, "product-overview", "ProcessSlide"), - createTemplateEntry(ComparisonChartSlide, PoComparisonChartSchema, PoComparisonChartId, PoComparisonChartName, PoComparisonChartDesc, "product-overview", "ComparisonChartSlide"), - createTemplateEntry(ComparisonTableWithTextSlide, PoComparisonTableSchema, PoComparisonTableId, PoComparisonTableName, PoComparisonTableDesc, "product-overview", "ComparisonTableWithTextSlide"), - createTemplateEntry(KpiCardsSlide, PoKpiCardsSchema, PoKpiCardsId, PoKpiCardsName, PoKpiCardsDesc, "product-overview", "KpiCardsSlide"), - createTemplateEntry(ReportSnapshotSlide, PoReportSnapshotSchema, PoReportSnapshotId, PoReportSnapshotName, PoReportSnapshotDesc, "product-overview", "ReportSnapshotSlide"), - createTemplateEntry(PricingPlanSlide, PoPricingPlanSchema, PoPricingPlanId, PoPricingPlanName, PoPricingPlanDesc, "product-overview", "PricingPlanSlide"), - createTemplateEntry(MeetTeamSlide, PoMeetTeamSchema, PoMeetTeamId, PoMeetTeamName, PoMeetTeamDesc, "product-overview", "MeetTeamSlide"), - createTemplateEntry(ImageGallerySlide, PoImageGallerySchema, PoImageGalleryId, PoImageGalleryName, PoImageGalleryDesc, "product-overview", "ImageGallerySlide"), + createTemplateEntry( + CoverSlide, + PoCoverSchema, + PoCoverId, + PoCoverName, + PoCoverDesc, + "product-overview", + "CoverSlide" + ), + createTemplateEntry( + TableOfContentSlide, + PoTableOfContentSchema, + PoTableOfContentId, + PoTableOfContentName, + PoTableOfContentDesc, + "product-overview", + "TableOfContentSlide" + ), + createTemplateEntry( + IntroductionSlide, + PoIntroductionSchema, + PoIntroductionId, + PoIntroductionName, + PoIntroductionDesc, + "product-overview", + "IntroductionSlide" + ), + createTemplateEntry( + MissionVisionSlide, + PoMissionVisionSchema, + PoMissionVisionId, + PoMissionVisionName, + PoMissionVisionDesc, + "product-overview", + "MissionVisionSlide" + ), + // createTemplateEntry(MarketOpportunitySlide, PoMarketOpportunitySchema, PoMarketOpportunityId, PoMarketOpportunityName, PoMarketOpportunityDesc, "product-overview", "MarketOpportunitySlide"), + createTemplateEntry( + BusinessChallengesGridSlide, + PoBizChallengesGridSchema, + PoBizChallengesGridId, + PoBizChallengesGridName, + PoBizChallengesGridDesc, + "product-overview", + "BusinessChallengesGridSlide" + ), + createTemplateEntry( + BusinessChallengesCardsSlide, + PoBizChallengesCardsSchema, + PoBizChallengesCardsId, + PoBizChallengesCardsName, + PoBizChallengesCardsDesc, + "product-overview", + "BusinessChallengesCardsSlide" + ), + createTemplateEntry( + OurServicesSlide, + PoOurServicesSchema, + PoOurServicesId, + PoOurServicesName, + PoOurServicesDesc, + "product-overview", + "OurServicesSlide" + ), + createTemplateEntry( + ProcessSlide, + PoProcessSchema, + PoProcessId, + PoProcessName, + PoProcessDesc, + "product-overview", + "ProcessSlide" + ), + createTemplateEntry( + ComparisonChartSlide, + PoComparisonChartSchema, + PoComparisonChartId, + PoComparisonChartName, + PoComparisonChartDesc, + "product-overview", + "ComparisonChartSlide" + ), + createTemplateEntry( + ComparisonTableWithTextSlide, + PoComparisonTableSchema, + PoComparisonTableId, + PoComparisonTableName, + PoComparisonTableDesc, + "product-overview", + "ComparisonTableWithTextSlide" + ), + createTemplateEntry( + KpiCardsSlide, + PoKpiCardsSchema, + PoKpiCardsId, + PoKpiCardsName, + PoKpiCardsDesc, + "product-overview", + "KpiCardsSlide" + ), + createTemplateEntry( + ReportSnapshotSlide, + PoReportSnapshotSchema, + PoReportSnapshotId, + PoReportSnapshotName, + PoReportSnapshotDesc, + "product-overview", + "ReportSnapshotSlide" + ), + createTemplateEntry( + PricingPlanSlide, + PoPricingPlanSchema, + PoPricingPlanId, + PoPricingPlanName, + PoPricingPlanDesc, + "product-overview", + "PricingPlanSlide" + ), + createTemplateEntry( + MeetTeamSlide, + PoMeetTeamSchema, + PoMeetTeamId, + PoMeetTeamName, + PoMeetTeamDesc, + "product-overview", + "MeetTeamSlide" + ), + createTemplateEntry( + ImageGallerySlide, + PoImageGallerySchema, + PoImageGalleryId, + PoImageGalleryName, + PoImageGalleryDesc, + "product-overview", + "ImageGallerySlide" + ), ]; export const reportTemplates: TemplateWithData[] = [ - createTemplateEntry(ReportIntroSlide, RepIntroSchema, RepIntroId, RepIntroName, RepIntroDesc, "report", "IntroCoverSlide"), - createTemplateEntry(TitleDescriptionImageSlide, RepIntroductionImageSchema, RepIntroductionImageId, RepIntroductionImageName, RepIntroductionImageDesc, "report", "TitleDescriptionImageSlide"), - createTemplateEntry(IntroductionStatsSlide, RepIntroductionStatsSchema, RepIntroductionStatsId, RepIntroductionStatsName, RepIntroductionStatsDesc, "report", "MetricsSlide"), - createTemplateEntry(SolutionSlide, RepSolutionSchema, RepSolutionId, RepSolutionName, RepSolutionDesc, "report", "TitleImageBulletCardsSlide"), - createTemplateEntry(MilestoneSlide, RepMilestoneSchema, RepMilestoneId, RepMilestoneName, RepMilestoneDesc, "report", "MilestoneSlide"), - createTemplateEntry(DataAnalysisListSlide, RepDataAnalysisListSchema, RepDataAnalysisListId, RepDataAnalysisListName, RepDataAnalysisListDesc, "report", "BulletListWithIconTitleDescriptionSlide"), - createTemplateEntry(DataAnalysisBarSlide, RepDataAnalysisBarSchema, RepDataAnalysisBarId, RepDataAnalysisBarName, RepDataAnalysisBarDesc, "report", "BarChartWithBulletListWithTitleDescriptionIconSlide"), - createTemplateEntry(DataAnalysisInsightBarSlide, RepDataAnalysisInsightBarSchema, RepDataAnalysisInsightBarId, RepDataAnalysisInsightBarName, RepDataAnalysisInsightBarDesc, "report", "TitleDescriptionChartSlide"), - createTemplateEntry(DataAnalysisLineStatsSlide, RepDataAnalysisLineStatsSchema, RepDataAnalysisLineStatsId, RepDataAnalysisLineStatsName, RepDataAnalysisLineStatsDesc, "report", "TitleChartWithMetricsCardsSlide"), - createTemplateEntry(DataAnalysisDashboardSlide, RepDataAnalysisDashboardSchema, RepDataAnalysisDashboardId, RepDataAnalysisDashboardName, RepDataAnalysisDashboardDesc, "report", "DataAnalysisDashboardSlide"), - createTemplateEntry(PerformanceSnapshotSlide, RepPerformanceSnapshotSchema, RepPerformanceSnapshotId, RepPerformanceSnapshotName, RepPerformanceSnapshotDesc, "report", "TitleMetricsSlide"), - createTemplateEntry(ReportServicesSlide, RepServicesSchema, RepServicesId, RepServicesName, RepServicesDesc, "report", "TitleWorkflowWithTitleDescriptionSlide"), - createTemplateEntry(ReportTeamSlide, RepTeamSchema, RepTeamId, RepTeamName, RepTeamDesc, "report", "HorizontalHeightSpanningImagesWithTitleSlide"), + createTemplateEntry( + ReportIntroSlide, + RepIntroSchema, + RepIntroId, + RepIntroName, + RepIntroDesc, + "report", + "IntroCoverSlide" + ), + createTemplateEntry( + TitleDescriptionImageSlide, + RepIntroductionImageSchema, + RepIntroductionImageId, + RepIntroductionImageName, + RepIntroductionImageDesc, + "report", + "TitleDescriptionImageSlide" + ), + createTemplateEntry( + IntroductionStatsSlide, + RepIntroductionStatsSchema, + RepIntroductionStatsId, + RepIntroductionStatsName, + RepIntroductionStatsDesc, + "report", + "MetricsSlide" + ), + createTemplateEntry( + SolutionSlide, + RepSolutionSchema, + RepSolutionId, + RepSolutionName, + RepSolutionDesc, + "report", + "TitleImageBulletCardsSlide" + ), + createTemplateEntry( + MilestoneSlide, + RepMilestoneSchema, + RepMilestoneId, + RepMilestoneName, + RepMilestoneDesc, + "report", + "MilestoneSlide" + ), + createTemplateEntry( + DataAnalysisListSlide, + RepDataAnalysisListSchema, + RepDataAnalysisListId, + RepDataAnalysisListName, + RepDataAnalysisListDesc, + "report", + "BulletListWithIconTitleDescriptionSlide" + ), + createTemplateEntry( + DataAnalysisBarSlide, + RepDataAnalysisBarSchema, + RepDataAnalysisBarId, + RepDataAnalysisBarName, + RepDataAnalysisBarDesc, + "report", + "BarChartWithBulletListWithTitleDescriptionIconSlide" + ), + createTemplateEntry( + DataAnalysisInsightBarSlide, + RepDataAnalysisInsightBarSchema, + RepDataAnalysisInsightBarId, + RepDataAnalysisInsightBarName, + RepDataAnalysisInsightBarDesc, + "report", + "TitleDescriptionChartSlide" + ), + createTemplateEntry( + DataAnalysisLineStatsSlide, + RepDataAnalysisLineStatsSchema, + RepDataAnalysisLineStatsId, + RepDataAnalysisLineStatsName, + RepDataAnalysisLineStatsDesc, + "report", + "TitleChartWithMetricsCardsSlide" + ), + createTemplateEntry( + DataAnalysisDashboardSlide, + RepDataAnalysisDashboardSchema, + RepDataAnalysisDashboardId, + RepDataAnalysisDashboardName, + RepDataAnalysisDashboardDesc, + "report", + "DataAnalysisDashboardSlide" + ), + createTemplateEntry( + PerformanceSnapshotSlide, + RepPerformanceSnapshotSchema, + RepPerformanceSnapshotId, + RepPerformanceSnapshotName, + RepPerformanceSnapshotDesc, + "report", + "TitleMetricsSlide" + ), + createTemplateEntry( + ReportServicesSlide, + RepServicesSchema, + RepServicesId, + RepServicesName, + RepServicesDesc, + "report", + "TitleWorkflowWithTitleDescriptionSlide" + ), + createTemplateEntry( + ReportTeamSlide, + RepTeamSchema, + RepTeamId, + RepTeamName, + RepTeamDesc, + "report", + "HorizontalHeightSpanningImagesWithTitleSlide" + ), +]; + +export const pitchDeckTemplates: TemplateWithData[] = [ + createTemplateEntry( + PitchDeckCenteredCoverWithFooterMeta, + PitchDeckCenteredCoverWithFooterMetaSchema, + PitchDeckCenteredCoverWithFooterMetaId, + PitchDeckCenteredCoverWithFooterMetaName, + PitchDeckCenteredCoverWithFooterMetaDesc, + "pitch-deck", + "CenteredCoverWithFooterMeta" + ), + createTemplateEntry( + PitchDeckFullWidthStatement, + PitchDeckFullWidthStatementSchema, + PitchDeckFullWidthStatementId, + PitchDeckFullWidthStatementName, + PitchDeckFullWidthStatementDesc, + "pitch-deck", + "FullWidthStatement" + ), + createTemplateEntry( + PitchDeckMediaAndTextSplit, + PitchDeckMediaAndTextSplitSchema, + PitchDeckMediaAndTextSplitId, + PitchDeckMediaAndTextSplitName, + PitchDeckMediaAndTextSplitDesc, + "pitch-deck", + "MediaAndTextSplit" + ), + createTemplateEntry( + PitchDeckTextAndChartSplit, + PitchDeckTextAndChartSplitSchema, + PitchDeckTextAndChartSplitId, + PitchDeckTextAndChartSplitName, + PitchDeckTextAndChartSplitDesc, + "pitch-deck", + "TextAndChartSplit" + ), + createTemplateEntry( + PitchDeckCardsWithChartSplit, + PitchDeckCardsWithChartSplitSchema, + PitchDeckCardsWithChartSplitId, + PitchDeckCardsWithChartSplitName, + PitchDeckCardsWithChartSplitDesc, + "pitch-deck", + "CardsWithChartSplit" + ), + createTemplateEntry( + PitchDeckAdaptiveValueCardGrid, + PitchDeckAdaptiveValueCardGridSchema, + PitchDeckAdaptiveValueCardGridId, + PitchDeckAdaptiveValueCardGridName, + PitchDeckAdaptiveValueCardGridDesc, + "pitch-deck", + "AdaptiveValueCardGrid" + ), + createTemplateEntry( + PitchDeckAdaptiveMediaCardGrid, + PitchDeckAdaptiveMediaCardGridSchema, + PitchDeckAdaptiveMediaCardGridId, + PitchDeckAdaptiveMediaCardGridName, + PitchDeckAdaptiveMediaCardGridDesc, + "pitch-deck", + "AdaptiveMediaCardGrid" + ), + createTemplateEntry( + PitchDeckHeadlineWithDetailColumns, + PitchDeckHeadlineWithDetailColumnsSchema, + PitchDeckHeadlineWithDetailColumnsId, + PitchDeckHeadlineWithDetailColumnsName, + PitchDeckHeadlineWithDetailColumnsDesc, + "pitch-deck", + "HeadlineWithDetailColumns" + ), + createTemplateEntry( + PitchDeckNumberedMultiColumnOverview, + PitchDeckNumberedMultiColumnOverviewSchema, + PitchDeckNumberedMultiColumnOverviewId, + PitchDeckNumberedMultiColumnOverviewName, + PitchDeckNumberedMultiColumnOverviewDesc, + "pitch-deck", + "NumberedMultiColumnOverview" + ), + createTemplateEntry( + PitchDeckPanelListWithMedia, + PitchDeckPanelListWithMediaSchema, + PitchDeckPanelListWithMediaId, + PitchDeckPanelListWithMediaName, + PitchDeckPanelListWithMediaDesc, + "pitch-deck", + "PanelListWithMedia" + ), + createTemplateEntry( + PitchDeckHorizontalTimeline, + PitchDeckHorizontalTimelineSchema, + PitchDeckHorizontalTimelineId, + PitchDeckHorizontalTimelineName, + PitchDeckHorizontalTimelineDesc, + "pitch-deck", + "HorizontalTimeline" + ), + createTemplateEntry( + PitchDeckOverlappingCircleCards, + PitchDeckOverlappingCircleCardsSchema, + PitchDeckOverlappingCircleCardsId, + PitchDeckOverlappingCircleCardsName, + PitchDeckOverlappingCircleCardsDesc, + "pitch-deck", + "OverlappingCircleCards" + ), ]; export const neoGeneralTemplates: TemplateWithData[] = [ + createTemplateEntry( + TextSplitWithEmphasisBlockLayout, + TextSplitWithEmphasisBlockSchema, + TextSplitWithEmphasisBlockId, + TextSplitWithEmphasisBlockName, + TextSplitWithEmphasisBlockDesc, + "neo-general", + "TextSplitWithEmphasisBlock" + ), + createTemplateEntry( + TitleWithGridBasedHeadingAndDescriptionLayout, + TitleWithGridBasedHeadingAndDescriptionSchema, + TitleWithGridBasedHeadingAndDescriptionId, + TitleWithGridBasedHeadingAndDescriptionName, + TitleWithGridBasedHeadingAndDescriptionDesc, + "neo-general", + "TitleWithGridBasedHeadingAndDescriptionLayout" + ), - createTemplateEntry(TextSplitWithEmphasisBlockLayout, TextSplitWithEmphasisBlockSchema, TextSplitWithEmphasisBlockId, TextSplitWithEmphasisBlockName, TextSplitWithEmphasisBlockDesc, 'neo-general', 'TextSplitWithEmphasisBlock'), - createTemplateEntry(TitleWithGridBasedHeadingAndDescriptionLayout, TitleWithGridBasedHeadingAndDescriptionSchema, TitleWithGridBasedHeadingAndDescriptionId, TitleWithGridBasedHeadingAndDescriptionName, TitleWithGridBasedHeadingAndDescriptionDesc, "neo-general", "TitleWithGridBasedHeadingAndDescriptionLayout"), + createTemplateEntry( + TitleWithFullWidthChartLayout, + TitleWithFullWidthChartSchema, + TitleWithFullWidthChartId, + TitleWithFullWidthChartName, + TitleWithFullWidthChartDesc, + "neo-general", + "TitleWithFullWidthChartLayout" + ), + createTemplateEntry( + TitleMetricsWithChartLayout, + TitleMetricsWithChartSchema, + TitleMetricsWithChartId, + TitleMetricsWithChartName, + TitleMetricsWithChartDesc, + "neo-general", + "TitleMetricsWithChartLayout" + ), + createTemplateEntry( + TitleTopDescriptionFourTeamMembersGridLayout, + TitleTopDescriptionFourTeamMembersGridSchema, + TitleTopDescriptionFourTeamMembersGridId, + TitleTopDescriptionFourTeamMembersGridName, + TitleTopDescriptionFourTeamMembersGridDesc, + "neo-general", + "TitleTopDescriptionFourTeamMembersGridLayout" + ), + createTemplateEntry( + TitleThreeColumnRiskConstraintsLayout, + TitleThreeColumnRiskConstraintsSchema, + TitleThreeColumnRiskConstraintsId, + TitleThreeColumnRiskConstraintsName, + TitleThreeColumnRiskConstraintsDesc, + "neo-general", + "TitleThreeColumnRiskConstraintsLayout" + ), + createTemplateEntry( + TitleMetricValueMetricLabelFunnelStagesLayout, + TitleMetricValueMetricLabelFunnelStagesSchema, + TitleMetricValueMetricLabelFunnelStagesId, + TitleMetricValueMetricLabelFunnelStagesName, + TitleMetricValueMetricLabelFunnelStagesDesc, + "neo-general", + "TitleMetricValueMetricLabelFunnelStages" + ), + createTemplateEntry( + ThankYouContactInfoFooterImageSlideLayout, + ThankYouContactInfoFooterImageSlideSchema, + ThankYouContactInfoFooterImageSlideId, + ThankYouContactInfoFooterImageSlideName, + ThankYouContactInfoFooterImageSlideDesc, + "neo-general", + "ThankYouContactInfoFooterImageSlideLayout" + ), + createTemplateEntry( + TimelineLayout, + TimelineLayoutSchema, + TimelineLayoutId, + TimelineLayoutName, + TimelineLayoutDesc, + "neo-general", + "TimelineLayoutLayout" + ), - createTemplateEntry(TitleWithFullWidthChartLayout, TitleWithFullWidthChartSchema, TitleWithFullWidthChartId, TitleWithFullWidthChartName, TitleWithFullWidthChartDesc, "neo-general", "TitleWithFullWidthChartLayout"), - createTemplateEntry(TitleMetricsWithChartLayout, TitleMetricsWithChartSchema, TitleMetricsWithChartId, TitleMetricsWithChartName, TitleMetricsWithChartDesc, "neo-general", "TitleMetricsWithChartLayout"), + createTemplateEntry( + IndexedThreeColumnListLayout, + IndexedThreeColumnListSchema, + IndexedThreeColumnListId, + IndexedThreeColumnListName, + IndexedThreeColumnListDesc, + "neo-general", + "IndexedThreeColumnListLayout" + ), + createTemplateEntry( + LayoutTextBlockWithMetricCardsLayout, + LayoutTextBlockWithMetricCardsSchema, + LayoutTextBlockWithMetricCardsId, + LayoutTextBlockWithMetricCardsName, + LayoutTextBlockWithMetricCardsDesc, + "neo-general", + "LayoutTextBlockWithMetricCardsLayout" + ), + createTemplateEntry( + LeftAlignQuotesLayout, + LeftAlignQuotesSchema, + LeftAlignQuotesId, + LeftAlignQuotesName, + LeftAlignQuotesDesc, + "neo-general", + "LeftAlignQuotesLayout" + ), + createTemplateEntry( + TitleDescriptionWithTableLayout, + TitleDescriptionWithTableSchema, + TitleDescriptionWithTableId, + TitleDescriptionWithTableName, + TitleDescriptionWithTableDesc, + "neo-general", + "TitleDescriptionWithTableLayout" + ), + createTemplateEntry( + ChallengeAndOutcomeWithOneStatLayout, + ChallengeAndOutcomeWithOneStatSchema, + ChallengeAndOutcomeWithOneStatId, + ChallengeAndOutcomeWithOneStatName, + ChallengeAndOutcomeWithOneStatDesc, + "neo-general", + "ChallengeAndOutcomeWithOneStatLayout" + ), + createTemplateEntry( + GridBasedEightMetricsSnapshotsLayout, + GridBasedEightMetricsSnapshotsSchema, + GridBasedEightMetricsSnapshotsId, + GridBasedEightMetricsSnapshotsName, + GridBasedEightMetricsSnapshotsDesc, + "neo-general", + "GridBasedEightMetricsSnapshotsLayout" + ), - createTemplateEntry(TitleTopDescriptionFourTeamMembersGridLayout, TitleTopDescriptionFourTeamMembersGridSchema, TitleTopDescriptionFourTeamMembersGridId, TitleTopDescriptionFourTeamMembersGridName, TitleTopDescriptionFourTeamMembersGridDesc, "neo-general", "TitleTopDescriptionFourTeamMembersGridLayout"), - createTemplateEntry(TitleThreeColumnRiskConstraintsLayout, TitleThreeColumnRiskConstraintsSchema, TitleThreeColumnRiskConstraintsId, TitleThreeColumnRiskConstraintsName, TitleThreeColumnRiskConstraintsDesc, "neo-general", "TitleThreeColumnRiskConstraintsLayout"), - createTemplateEntry(TitleMetricValueMetricLabelFunnelStagesLayout, TitleMetricValueMetricLabelFunnelStagesSchema, TitleMetricValueMetricLabelFunnelStagesId, TitleMetricValueMetricLabelFunnelStagesName, TitleMetricValueMetricLabelFunnelStagesDesc, "neo-general", "TitleMetricValueMetricLabelFunnelStages"), - createTemplateEntry(ThankYouContactInfoFooterImageSlideLayout, ThankYouContactInfoFooterImageSlideSchema, ThankYouContactInfoFooterImageSlideId, ThankYouContactInfoFooterImageSlideName, ThankYouContactInfoFooterImageSlideDesc, "neo-general", "ThankYouContactInfoFooterImageSlideLayout"), - createTemplateEntry(TimelineLayout, TimelineLayoutSchema, TimelineLayoutId, TimelineLayoutName, TimelineLayoutDesc, "neo-general", "TimelineLayoutLayout"), + createTemplateEntry( + HeadlineTextWithBulletsAndStatsLayout, + HeadlineTextWithBulletsAndStatsSchema, + HeadlineTextWithBulletsAndStatsId, + HeadlineTextWithBulletsAndStatsName, + HeadlineTextWithBulletsAndStatsDesc, + "neo-general", + "HeadlineTextWithBulletsAndStatsLayout" + ), + createTemplateEntry( + HeadlineDescriptionWithImageLayout, + HeadlineDescriptionWithImageSchema, + HeadlineDescriptionWithImageId, + HeadlineDescriptionWithImageName, + HeadlineDescriptionWithImageDesc, + "neo-general", + "HeadlineDescriptionWithImageLayout" + ), + createTemplateEntry( + HeadlineDescriptionWithDoubleImageLayout, + HeadlineDescriptionWithDoubleImageSchema, + HeadlineDescriptionWithDoubleImageId, + HeadlineDescriptionWithDoubleImageName, + HeadlineDescriptionWithDoubleImageDesc, + "neo-general", + "HeadlineDescriptionWithDoubleImageLayout" + ), - createTemplateEntry(IndexedThreeColumnListLayout, IndexedThreeColumnListSchema, IndexedThreeColumnListId, IndexedThreeColumnListName, IndexedThreeColumnListDesc, "neo-general", "IndexedThreeColumnListLayout"), - createTemplateEntry(LayoutTextBlockWithMetricCardsLayout, LayoutTextBlockWithMetricCardsSchema, LayoutTextBlockWithMetricCardsId, LayoutTextBlockWithMetricCardsName, LayoutTextBlockWithMetricCardsDesc, "neo-general", "LayoutTextBlockWithMetricCardsLayout"), - createTemplateEntry(LeftAlignQuotesLayout, LeftAlignQuotesSchema, LeftAlignQuotesId, LeftAlignQuotesName, LeftAlignQuotesDesc, "neo-general", "LeftAlignQuotesLayout"), - createTemplateEntry(TitleDescriptionWithTableLayout, TitleDescriptionWithTableSchema, TitleDescriptionWithTableId, TitleDescriptionWithTableName, TitleDescriptionWithTableDesc, "neo-general", "TitleDescriptionWithTableLayout"), - createTemplateEntry(ChallengeAndOutcomeWithOneStatLayout, ChallengeAndOutcomeWithOneStatSchema, ChallengeAndOutcomeWithOneStatId, ChallengeAndOutcomeWithOneStatName, ChallengeAndOutcomeWithOneStatDesc, "neo-general", "ChallengeAndOutcomeWithOneStatLayout"), - createTemplateEntry(GridBasedEightMetricsSnapshotsLayout, GridBasedEightMetricsSnapshotsSchema, GridBasedEightMetricsSnapshotsId, GridBasedEightMetricsSnapshotsName, GridBasedEightMetricsSnapshotsDesc, "neo-general", "GridBasedEightMetricsSnapshotsLayout"), + createTemplateEntry( + BulletIconsOnlySlideNeoGeneralLayout, + BulletIconsOnlyNeoGeneralSchema, + BulletIconsOnlyNeoGeneralId, + BulletIconsOnlyNeoGeneralName, + BulletIconsOnlyNeoGeneralDesc, + "neo-general", + "BulletIconsOnlySlideLayout" + ), + createTemplateEntry( + BulletWithIconsSlideNeoGeneralLayout, + BulletWithIconsNeoGeneralSchema, + BulletWithIconsNeoGeneralId, + BulletWithIconsNeoGeneralName, + BulletWithIconsNeoGeneralDesc, + "neo-general", + "BulletWithIconsSlideLayout" + ), + createTemplateEntry( + ChartWithBulletsSlideNeoGeneralLayout, + ChartWithBulletsNeoGeneralSchema, + ChartWithBulletsNeoGeneralId, + ChartWithBulletsNeoGeneralName, + ChartWithBulletsNeoGeneralDesc, + "neo-general", + "ChartWithBulletsSlideLayout" + ), - createTemplateEntry(HeadlineTextWithBulletsAndStatsLayout, HeadlineTextWithBulletsAndStatsSchema, HeadlineTextWithBulletsAndStatsId, HeadlineTextWithBulletsAndStatsName, HeadlineTextWithBulletsAndStatsDesc, "neo-general", "HeadlineTextWithBulletsAndStatsLayout"), - createTemplateEntry(HeadlineDescriptionWithImageLayout, HeadlineDescriptionWithImageSchema, HeadlineDescriptionWithImageId, HeadlineDescriptionWithImageName, HeadlineDescriptionWithImageDesc, "neo-general", "HeadlineDescriptionWithImageLayout"), - createTemplateEntry(HeadlineDescriptionWithDoubleImageLayout, HeadlineDescriptionWithDoubleImageSchema, HeadlineDescriptionWithDoubleImageId, HeadlineDescriptionWithDoubleImageName, HeadlineDescriptionWithDoubleImageDesc, "neo-general", "HeadlineDescriptionWithDoubleImageLayout"), + createTemplateEntry( + MetricsWithImageSlideNeoGeneralLayout, + MetricsWithImageNeoGeneralSchema, + MetricsWithImageNeoGeneralId, + MetricsWithImageNeoGeneralName, + MetricsWithImageNeoGeneralDesc, + "neo-general", + "MetricsWithImageSlideLayout" + ), + createTemplateEntry( + NumberedBulletsSlideNeoGeneralLayout, + NumberedBulletsNeoGeneralSchema, + NumberedBulletsNeoGeneralId, + NumberedBulletsNeoGeneralName, + NumberedBulletsNeoGeneralDesc, + "neo-general", + "NumberedBulletsSlideLayout" + ), + createTemplateEntry( + QuoteSlideNeoGeneralLayout, + QuoteNeoGeneralSchema, + QuoteNeoGeneralId, + QuoteNeoGeneralName, + QuoteNeoGeneralDesc, + "neo-general", + "QuoteSlideLayout" + ), + createTemplateEntry( + TableOfContentWithoutPageNumberLayout, + TableOfContentWithoutPageNumberSchema, + TableOfContentWithoutPageNumberId, + TableOfContentWithoutPageNumberName, + TableOfContentWithoutPageNumberDesc, + "neo-general", + "TableOfContentWithoutPageNumber" + ), - createTemplateEntry(BulletIconsOnlySlideNeoGeneralLayout, BulletIconsOnlyNeoGeneralSchema, BulletIconsOnlyNeoGeneralId, BulletIconsOnlyNeoGeneralName, BulletIconsOnlyNeoGeneralDesc, "neo-general", "BulletIconsOnlySlideLayout"), - createTemplateEntry(BulletWithIconsSlideNeoGeneralLayout, BulletWithIconsNeoGeneralSchema, BulletWithIconsNeoGeneralId, BulletWithIconsNeoGeneralName, BulletWithIconsNeoGeneralDesc, "neo-general", "BulletWithIconsSlideLayout"), - createTemplateEntry(ChartWithBulletsSlideNeoGeneralLayout, ChartWithBulletsNeoGeneralSchema, ChartWithBulletsNeoGeneralId, ChartWithBulletsNeoGeneralName, ChartWithBulletsNeoGeneralDesc, "neo-general", "ChartWithBulletsSlideLayout"), - - createTemplateEntry(MetricsWithImageSlideNeoGeneralLayout, MetricsWithImageNeoGeneralSchema, MetricsWithImageNeoGeneralId, MetricsWithImageNeoGeneralName, MetricsWithImageNeoGeneralDesc, "neo-general", "MetricsWithImageSlideLayout"), - createTemplateEntry(NumberedBulletsSlideNeoGeneralLayout, NumberedBulletsNeoGeneralSchema, NumberedBulletsNeoGeneralId, NumberedBulletsNeoGeneralName, NumberedBulletsNeoGeneralDesc, "neo-general", "NumberedBulletsSlideLayout"), - createTemplateEntry(QuoteSlideNeoGeneralLayout, QuoteNeoGeneralSchema, QuoteNeoGeneralId, QuoteNeoGeneralName, QuoteNeoGeneralDesc, "neo-general", "QuoteSlideLayout"), - - createTemplateEntry(TableOfContentWithoutPageNumberLayout, TableOfContentWithoutPageNumberSchema, TableOfContentWithoutPageNumberId, TableOfContentWithoutPageNumberName, TableOfContentWithoutPageNumberDesc, "neo-general", "TableOfContentWithoutPageNumber"), - - createTemplateEntry(TeamSlideNeoGeneralLayout, TeamNeoGeneralSchema, TeamNeoGeneralId, TeamNeoGeneralName, TeamNeoGeneralDesc, "neo-general", "TeamSlideLayout"), - createTemplateEntry(MultiChartGridSlideLayout, MultiChartGridSlideSchema, MultiChartGridSlideId, MultiChartGridSlideName, MultiChartGridSlideDesc, "neo-general", "MultiChartGridSlideLayout"), - createTemplateEntry(TitleDescriptionMultiChartGridWithMetricsLayout, TitleDescriptionMultiChartGridWithMetricsSchema, TitleDescriptionMultiChartGridWithMetricsId, TitleDescriptionMultiChartGridWithMetricsName, TitleDescriptionMultiChartGridWithMetricsDesc, "neo-general", "TitleDescriptionMultiChartGridWithMetrics"), - createTemplateEntry(TitleDescriptionMultiChartGridWithBulletsLayout, TitleDescriptionMultiChartGridWithBulletsSchema, TitleDescriptionMultiChartGridWithBulletsId, TitleDescriptionMultiChartGridWithBulletsName, TitleDescriptionMultiChartGridWithBulletsDesc, "neo-general", "TitleDescriptionMultiChartGridWithBullets"), -] + createTemplateEntry( + TeamSlideNeoGeneralLayout, + TeamNeoGeneralSchema, + TeamNeoGeneralId, + TeamNeoGeneralName, + TeamNeoGeneralDesc, + "neo-general", + "TeamSlideLayout" + ), + createTemplateEntry( + MultiChartGridSlideLayout, + MultiChartGridSlideSchema, + MultiChartGridSlideId, + MultiChartGridSlideName, + MultiChartGridSlideDesc, + "neo-general", + "MultiChartGridSlideLayout" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithMetricsLayout, + TitleDescriptionMultiChartGridWithMetricsSchema, + TitleDescriptionMultiChartGridWithMetricsId, + TitleDescriptionMultiChartGridWithMetricsName, + TitleDescriptionMultiChartGridWithMetricsDesc, + "neo-general", + "TitleDescriptionMultiChartGridWithMetrics" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithBulletsLayout, + TitleDescriptionMultiChartGridWithBulletsSchema, + TitleDescriptionMultiChartGridWithBulletsId, + TitleDescriptionMultiChartGridWithBulletsName, + TitleDescriptionMultiChartGridWithBulletsDesc, + "neo-general", + "TitleDescriptionMultiChartGridWithBullets" + ), +]; export const neoStandardTemplates: TemplateWithData[] = [ - createTemplateEntry(TitleBadgeChartLayout, TitleBadgeChartSchema, TitleBadgeChartId, TitleBadgeChartName, TitleBadgeChartDesc, "neo-standard", "TitleBadgeChartLayout"), - createTemplateEntry(TitleDescriptionBulletListStandardLayout, TitleDescriptionBulletListStandardSchema, TitleDescriptionBulletListStandardId, TitleDescriptionBulletListStandardName, TitleDescriptionBulletListStandardDesc, "neo-standard", "TitleDescriptionBulletList"), - createTemplateEntry(TitleDescriptionContactCardsLayout, TitleDescriptionContactCardsSchema, TitleDescriptionContactCardsId, TitleDescriptionContactCardsName, TitleDescriptionContactCardsDesc, "neo-standard", "TitleDescriptionContactCardsLayout"), - createTemplateEntry(TitleDescriptionIconListLayout, TitleDescriptionIconListSchema, TitleDescriptionIconListId, TitleDescriptionIconListName, TitleDescriptionIconListDesc, "neo-standard", "TitleDescriptionIconListLayout"), - createTemplateEntry(TitleDescriptionImageRightLayout, TitleDescriptionImageRightSchema, TitleDescriptionImageRightId, TitleDescriptionImageRightName, TitleDescriptionImageRightDesc, "neo-standard", "TitleDescriptionImageRightLayout"), - createTemplateEntry(TitleDescriptionRadialCardsLayout, TitleDescriptionRadialCardsSchema, TitleDescriptionRadialCardsId, TitleDescriptionRadialCardsName, TitleDescriptionRadialCardsDesc, "neo-standard", "TitleDescriptionRadialCardsLayout"), - createTemplateEntry(TitleDescriptionTableLayout, TitleDescriptionTableSchema, TitleDescriptionTableId, TitleDescriptionTableName, TitleDescriptionTableDesc, "neo-standard", "TitleDescriptionTableLayout"), - createTemplateEntry(TitleDescriptionTimelineLayout, TitleDescriptionTimelineSchema, TitleDescriptionTimelineId, TitleDescriptionTimelineName, TitleDescriptionTimelineDesc, "neo-standard", "TitleDescriptionTimelineLayout"), - createTemplateEntry(TitleDualChartsComparisonLayout, TitleDualChartsComparisonSchema, TitleDualChartsComparisonId, TitleDualChartsComparisonName, TitleDualChartsComparisonDesc, "neo-standard", "TitleDualChartsComparisonLayout"), - createTemplateEntry(TitleDualComparisonCardsLayout, TitleDualComparisonCardsSchema, TitleDualComparisonCardsId, TitleDualComparisonCardsName, TitleDualComparisonCardsDesc, "neo-standard", "TitleDualComparisonCardsLayout"), - createTemplateEntry(TitleKpiGridLayout, TitleKpiGridSchema, TitleKpiGridId, TitleKpiGridName, TitleKpiGridDesc, "neo-standard", "TitleKpiGridLayout"), - createTemplateEntry(TitleMetricsChartLayout, TitleMetricsChartSchema, TitleMetricsChartId, TitleMetricsChartName, TitleMetricsChartDesc, "neo-standard", "TitleMetricsChartLayout"), - createTemplateEntry(TitleMetricsImageLayout, TitleMetricsImageSchema, TitleMetricsImageId, TitleMetricsImageName, TitleMetricsImageDesc, "neo-standard", "TitleMetricsImageLayout"), - createTemplateEntry(TitlePointsDonutGridLayout, TitlePointsDonutGridSchema, TitlePointsDonutGridId, TitlePointsDonutGridName, TitlePointsDonutGridDesc, "neo-standard", "TitlePointsDonutGridLayout"), - createTemplateEntry(TitleDescriptionMultiChartGridStandardLayout, TitleDescriptionMultiChartGridStandardSchema, TitleDescriptionMultiChartGridStandardId, TitleDescriptionMultiChartGridStandardName, TitleDescriptionMultiChartGridStandardDesc, "neo-standard", "TitleDescriptionMultiChartGrid"), - createTemplateEntry(TitleDescriptionMultiChartGridWithMetricsStandardLayout, TitleDescriptionMultiChartGridWithMetricsStandardSchema, TitleDescriptionMultiChartGridWithMetricsStandardId, TitleDescriptionMultiChartGridWithMetricsStandardName, TitleDescriptionMultiChartGridWithMetricsStandardDesc, "neo-standard", "TitleDescriptionMultiChartGridWithMetrics"), - createTemplateEntry(TitleDescriptionMultiChartGridWithBulletsStandardLayout, TitleDescriptionMultiChartGridWithBulletsStandardSchema, TitleDescriptionMultiChartGridWithBulletsStandardId, TitleDescriptionMultiChartGridWithBulletsStandardName, TitleDescriptionMultiChartGridWithBulletsStandardDesc, "neo-standard", "TitleDescriptionMultiChartGridWithBullets"), -] + createTemplateEntry( + TitleBadgeChartLayout, + TitleBadgeChartSchema, + TitleBadgeChartId, + TitleBadgeChartName, + TitleBadgeChartDesc, + "neo-standard", + "TitleBadgeChartLayout" + ), + createTemplateEntry( + TitleDescriptionBulletListStandardLayout, + TitleDescriptionBulletListStandardSchema, + TitleDescriptionBulletListStandardId, + TitleDescriptionBulletListStandardName, + TitleDescriptionBulletListStandardDesc, + "neo-standard", + "TitleDescriptionBulletList" + ), + createTemplateEntry( + TitleDescriptionContactCardsLayout, + TitleDescriptionContactCardsSchema, + TitleDescriptionContactCardsId, + TitleDescriptionContactCardsName, + TitleDescriptionContactCardsDesc, + "neo-standard", + "TitleDescriptionContactCardsLayout" + ), + createTemplateEntry( + TitleDescriptionIconListLayout, + TitleDescriptionIconListSchema, + TitleDescriptionIconListId, + TitleDescriptionIconListName, + TitleDescriptionIconListDesc, + "neo-standard", + "TitleDescriptionIconListLayout" + ), + createTemplateEntry( + TitleDescriptionImageRightLayout, + TitleDescriptionImageRightSchema, + TitleDescriptionImageRightId, + TitleDescriptionImageRightName, + TitleDescriptionImageRightDesc, + "neo-standard", + "TitleDescriptionImageRightLayout" + ), + createTemplateEntry( + TitleDescriptionRadialCardsLayout, + TitleDescriptionRadialCardsSchema, + TitleDescriptionRadialCardsId, + TitleDescriptionRadialCardsName, + TitleDescriptionRadialCardsDesc, + "neo-standard", + "TitleDescriptionRadialCardsLayout" + ), + createTemplateEntry( + TitleDescriptionTableLayout, + TitleDescriptionTableSchema, + TitleDescriptionTableId, + TitleDescriptionTableName, + TitleDescriptionTableDesc, + "neo-standard", + "TitleDescriptionTableLayout" + ), + createTemplateEntry( + TitleDescriptionTimelineLayout, + TitleDescriptionTimelineSchema, + TitleDescriptionTimelineId, + TitleDescriptionTimelineName, + TitleDescriptionTimelineDesc, + "neo-standard", + "TitleDescriptionTimelineLayout" + ), + createTemplateEntry( + TitleDualChartsComparisonLayout, + TitleDualChartsComparisonSchema, + TitleDualChartsComparisonId, + TitleDualChartsComparisonName, + TitleDualChartsComparisonDesc, + "neo-standard", + "TitleDualChartsComparisonLayout" + ), + createTemplateEntry( + TitleDualComparisonCardsLayout, + TitleDualComparisonCardsSchema, + TitleDualComparisonCardsId, + TitleDualComparisonCardsName, + TitleDualComparisonCardsDesc, + "neo-standard", + "TitleDualComparisonCardsLayout" + ), + createTemplateEntry( + TitleKpiGridLayout, + TitleKpiGridSchema, + TitleKpiGridId, + TitleKpiGridName, + TitleKpiGridDesc, + "neo-standard", + "TitleKpiGridLayout" + ), + createTemplateEntry( + TitleMetricsChartLayout, + TitleMetricsChartSchema, + TitleMetricsChartId, + TitleMetricsChartName, + TitleMetricsChartDesc, + "neo-standard", + "TitleMetricsChartLayout" + ), + createTemplateEntry( + TitleMetricsImageLayout, + TitleMetricsImageSchema, + TitleMetricsImageId, + TitleMetricsImageName, + TitleMetricsImageDesc, + "neo-standard", + "TitleMetricsImageLayout" + ), + createTemplateEntry( + TitlePointsDonutGridLayout, + TitlePointsDonutGridSchema, + TitlePointsDonutGridId, + TitlePointsDonutGridName, + TitlePointsDonutGridDesc, + "neo-standard", + "TitlePointsDonutGridLayout" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridStandardLayout, + TitleDescriptionMultiChartGridStandardSchema, + TitleDescriptionMultiChartGridStandardId, + TitleDescriptionMultiChartGridStandardName, + TitleDescriptionMultiChartGridStandardDesc, + "neo-standard", + "TitleDescriptionMultiChartGrid" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithMetricsStandardLayout, + TitleDescriptionMultiChartGridWithMetricsStandardSchema, + TitleDescriptionMultiChartGridWithMetricsStandardId, + TitleDescriptionMultiChartGridWithMetricsStandardName, + TitleDescriptionMultiChartGridWithMetricsStandardDesc, + "neo-standard", + "TitleDescriptionMultiChartGridWithMetrics" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithBulletsStandardLayout, + TitleDescriptionMultiChartGridWithBulletsStandardSchema, + TitleDescriptionMultiChartGridWithBulletsStandardId, + TitleDescriptionMultiChartGridWithBulletsStandardName, + TitleDescriptionMultiChartGridWithBulletsStandardDesc, + "neo-standard", + "TitleDescriptionMultiChartGridWithBullets" + ), +]; export const neoModernTemplates: TemplateWithData[] = [ - createTemplateEntry(TitleDescriptionBulletListModernLayout, TitleDescriptionBulletListModernSchema, TitleDescriptionBulletListModernId, TitleDescriptionBulletListModernName, TitleDescriptionBulletListModernDesc, "neo-modern", "TitleDescriptionBulletList"), - createTemplateEntry(TitleDescriptionContactListLayout, TitleDescriptionContactListSchema, TitleDescriptionContactListId, TitleDescriptionContactListName, TitleDescriptionContactListDesc, "neo-modern", "TitleDescriptionContactListLayout"), - createTemplateEntry(TitleDescriptionDualMetricsGridLayout, TitleDescriptionDualMetricsGridSchema, TitleDescriptionDualMetricsGridId, TitleDescriptionDualMetricsGridName, TitleDescriptionDualMetricsGridDesc, "neo-modern", "TitleDescriptionDualMetricsGridLayout"), - createTemplateEntry(TitleDescriptionIconTimelineLayout, TitleDescriptionIconTimelineSchema, TitleDescriptionIconTimelineId, TitleDescriptionIconTimelineName, TitleDescriptionIconTimelineDesc, "neo-modern", "TitleDescriptionIconTimelineLayout"), - createTemplateEntry(TitleDescriptionImageRightModernLayout, TitleDescriptionImageRightModernSchema, TitleDescriptionImageRightModernId, TitleDescriptionImageRightModernName, TitleDescriptionImageRightModernDesc, "neo-modern", "TitleDescriptionImageRightModernLayout"), - createTemplateEntry(TitleDescriptionMetricsChartLayout, TitleDescriptionMetricsChartSchema, TitleDescriptionMetricsChartId, TitleDescriptionMetricsChartName, TitleDescriptionMetricsChartDesc, "neo-modern", "TitleDescriptionMetricsChartLayout"), - createTemplateEntry(TitleDescriptionMetricsImageLayout, TitleDescriptionMetricsImageSchema, TitleDescriptionMetricsImageId, TitleDescriptionMetricsImageName, TitleDescriptionMetricsImageDesc, "neo-modern", "TitleDescriptionMetricsImageLayout"), - createTemplateEntry(TitleDescriptionMetricsTableLayout, TitleDescriptionMetricsTableSchema, TitleDescriptionMetricsTableId, TitleDescriptionMetricsTableName, TitleDescriptionMetricsTableDesc, "neo-modern", "TitleDescriptionMetricsTableLayout"), - createTemplateEntry(TitleDualComparisonChartsLayout, TitleDualComparisonChartsSchema, TitleDualComparisonChartsId, TitleDualComparisonChartsName, TitleDualComparisonChartsDesc, "neo-modern", "TitleDualComparisonChartsLayout"), - createTemplateEntry(TitleDualComparisonCardsModernLayout, TitleDualComparisonCardsModernSchema, TitleDualComparisonCardsModernId, TitleDualComparisonCardsModernName, TitleDualComparisonCardsModernDesc, "neo-modern", "TitleDualComparisonCardsModernLayout"), - createTemplateEntry(TitleHorizontalAltenenatingTimelineLayout, TitleHorizontalAltenenatingTimelineSchema, TitleHorizontalAltenenatingTimelineId, TitleHorizontalAltenenatingTimelineName, TitleHorizontalAltenenatingTimelineDesc, "neo-modern", "TitleHorizontalAltenenatingTimelineLayout"), - createTemplateEntry(TitleKpiSnapshotGridLayout, TitleKpiSnapshotGridSchema, TitleKpiSnapshotGridId, TitleKpiSnapshotGridName, TitleKpiSnapshotGridDesc, "neo-modern", "TitleKpiSnapshotGridLayout"), - createTemplateEntry(TitleSubtitlesChartLayout, TitleSubtitlesChartSchema, TitleSubtitlesChartId, TitleSubtitlesChartName, TitleSubtitlesChartDesc, "neo-modern", "TitleSubtitlesChartLayout"), - createTemplateEntry(TitleTwoColumnNumberListLayout, TitleTwoColumnNumberListSchema, TitleTwoColumnNumberListId, TitleTwoColumnNumberListName, TitleTwoColumnNumberListDesc, "neo-modern", "TitleTwoColumnNumberListLayout"), - createTemplateEntry(TitleDescriptionMultiChartGridLayout, TitleDescriptionMultiChartGridSchema, TitleDescriptionMultiChartGridId, TitleDescriptionMultiChartGridName, TitleDescriptionMultiChartGridDesc, "neo-modern", "TitleDescriptionMultiChartGrid"), - createTemplateEntry(TitleDescriptionMultiChartGridWithMetricsModernLayout, TitleDescriptionMultiChartGridWithMetricsModernSchema, TitleDescriptionMultiChartGridWithMetricsModernId, TitleDescriptionMultiChartGridWithMetricsModernName, TitleDescriptionMultiChartGridWithMetricsModernDesc, "neo-modern", "TitleDescriptionMultiChartGridWithMetrics"), - createTemplateEntry(TitleDescriptionMultiChartGridWithBulletsModernLayout, TitleDescriptionMultiChartGridWithBulletsModernSchema, TitleDescriptionMultiChartGridWithBulletsModernId, TitleDescriptionMultiChartGridWithBulletsModernName, TitleDescriptionMultiChartGridWithBulletsModernDesc, "neo-modern", "TitleDescriptionMultiChartGridWithBullets"), -] + createTemplateEntry( + TitleDescriptionBulletListModernLayout, + TitleDescriptionBulletListModernSchema, + TitleDescriptionBulletListModernId, + TitleDescriptionBulletListModernName, + TitleDescriptionBulletListModernDesc, + "neo-modern", + "TitleDescriptionBulletList" + ), + createTemplateEntry( + TitleDescriptionContactListLayout, + TitleDescriptionContactListSchema, + TitleDescriptionContactListId, + TitleDescriptionContactListName, + TitleDescriptionContactListDesc, + "neo-modern", + "TitleDescriptionContactListLayout" + ), + createTemplateEntry( + TitleDescriptionDualMetricsGridLayout, + TitleDescriptionDualMetricsGridSchema, + TitleDescriptionDualMetricsGridId, + TitleDescriptionDualMetricsGridName, + TitleDescriptionDualMetricsGridDesc, + "neo-modern", + "TitleDescriptionDualMetricsGridLayout" + ), + createTemplateEntry( + TitleDescriptionIconTimelineLayout, + TitleDescriptionIconTimelineSchema, + TitleDescriptionIconTimelineId, + TitleDescriptionIconTimelineName, + TitleDescriptionIconTimelineDesc, + "neo-modern", + "TitleDescriptionIconTimelineLayout" + ), + createTemplateEntry( + TitleDescriptionImageRightModernLayout, + TitleDescriptionImageRightModernSchema, + TitleDescriptionImageRightModernId, + TitleDescriptionImageRightModernName, + TitleDescriptionImageRightModernDesc, + "neo-modern", + "TitleDescriptionImageRightModernLayout" + ), + createTemplateEntry( + TitleDescriptionMetricsChartLayout, + TitleDescriptionMetricsChartSchema, + TitleDescriptionMetricsChartId, + TitleDescriptionMetricsChartName, + TitleDescriptionMetricsChartDesc, + "neo-modern", + "TitleDescriptionMetricsChartLayout" + ), + createTemplateEntry( + TitleDescriptionMetricsImageLayout, + TitleDescriptionMetricsImageSchema, + TitleDescriptionMetricsImageId, + TitleDescriptionMetricsImageName, + TitleDescriptionMetricsImageDesc, + "neo-modern", + "TitleDescriptionMetricsImageLayout" + ), + createTemplateEntry( + TitleDescriptionMetricsTableLayout, + TitleDescriptionMetricsTableSchema, + TitleDescriptionMetricsTableId, + TitleDescriptionMetricsTableName, + TitleDescriptionMetricsTableDesc, + "neo-modern", + "TitleDescriptionMetricsTableLayout" + ), + createTemplateEntry( + TitleDualComparisonChartsLayout, + TitleDualComparisonChartsSchema, + TitleDualComparisonChartsId, + TitleDualComparisonChartsName, + TitleDualComparisonChartsDesc, + "neo-modern", + "TitleDualComparisonChartsLayout" + ), + createTemplateEntry( + TitleDualComparisonCardsModernLayout, + TitleDualComparisonCardsModernSchema, + TitleDualComparisonCardsModernId, + TitleDualComparisonCardsModernName, + TitleDualComparisonCardsModernDesc, + "neo-modern", + "TitleDualComparisonCardsModernLayout" + ), + createTemplateEntry( + TitleHorizontalAltenenatingTimelineLayout, + TitleHorizontalAltenenatingTimelineSchema, + TitleHorizontalAltenenatingTimelineId, + TitleHorizontalAltenenatingTimelineName, + TitleHorizontalAltenenatingTimelineDesc, + "neo-modern", + "TitleHorizontalAltenenatingTimelineLayout" + ), + createTemplateEntry( + TitleKpiSnapshotGridLayout, + TitleKpiSnapshotGridSchema, + TitleKpiSnapshotGridId, + TitleKpiSnapshotGridName, + TitleKpiSnapshotGridDesc, + "neo-modern", + "TitleKpiSnapshotGridLayout" + ), + createTemplateEntry( + TitleSubtitlesChartLayout, + TitleSubtitlesChartSchema, + TitleSubtitlesChartId, + TitleSubtitlesChartName, + TitleSubtitlesChartDesc, + "neo-modern", + "TitleSubtitlesChartLayout" + ), + createTemplateEntry( + TitleTwoColumnNumberListLayout, + TitleTwoColumnNumberListSchema, + TitleTwoColumnNumberListId, + TitleTwoColumnNumberListName, + TitleTwoColumnNumberListDesc, + "neo-modern", + "TitleTwoColumnNumberListLayout" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridLayout, + TitleDescriptionMultiChartGridSchema, + TitleDescriptionMultiChartGridId, + TitleDescriptionMultiChartGridName, + TitleDescriptionMultiChartGridDesc, + "neo-modern", + "TitleDescriptionMultiChartGrid" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithMetricsModernLayout, + TitleDescriptionMultiChartGridWithMetricsModernSchema, + TitleDescriptionMultiChartGridWithMetricsModernId, + TitleDescriptionMultiChartGridWithMetricsModernName, + TitleDescriptionMultiChartGridWithMetricsModernDesc, + "neo-modern", + "TitleDescriptionMultiChartGridWithMetrics" + ), + createTemplateEntry( + TitleDescriptionMultiChartGridWithBulletsModernLayout, + TitleDescriptionMultiChartGridWithBulletsModernSchema, + TitleDescriptionMultiChartGridWithBulletsModernId, + TitleDescriptionMultiChartGridWithBulletsModernName, + TitleDescriptionMultiChartGridWithBulletsModernDesc, + "neo-modern", + "TitleDescriptionMultiChartGridWithBullets" + ), +]; export const neoSwiftTemplates: TemplateWithData[] = [ - createTemplateEntry(TitleCenteredChartLayout, TitleCenteredChartSchema, TitleCenteredChartId, TitleCenteredChartName, TitleCenteredChartDesc, "neo-swift", "TitleCenteredChartLayout"), - createTemplateEntry(TitleChartMetricsSidebarLayout, TitleChartMetricsSidebarSchema, TitleChartMetricsSidebarId, TitleChartMetricsSidebarName, TitleChartMetricsSidebarDesc, "neo-swift", "TitleChartMetricsSidebarLayout"), - createTemplateEntry(TitleDescriptionBulletListLayout, TitleDescriptionBulletListSchema, TitleDescriptionBulletListId, TitleDescriptionBulletListName, TitleDescriptionBulletListDesc, "neo-swift", "TitleDescriptionBulletListLayout"), - createTemplateEntry(TitleDescriptionDataTableLayout, TitleDescriptionDataTableSchema, TitleDescriptionDataTableId, TitleDescriptionDataTableName, TitleDescriptionDataTableDesc, "neo-swift", "TitleDescriptionDataTableLayout"), - createTemplateEntry(TitleDescriptionImageRightSwiftLayout, TitleDescriptionImageRightSwiftSchema, TitleDescriptionImageRightSwiftId, TitleDescriptionImageRightSwiftName, TitleDescriptionImageRightSwiftDesc, "neo-swift", "TitleDescriptionImageRightSwiftLayout"), - createTemplateEntry(TitleDescriptionMetricsGridLayout, TitleDescriptionMetricsGridSchema, TitleDescriptionMetricsGridId, TitleDescriptionMetricsGridName, TitleDescriptionMetricsGridDesc, "neo-swift", "TitleDescriptionMetricsGridLayout"), - createTemplateEntry(TitleDescriptionMetricsGridImageLayout, TitleDescriptionMetricsGridImageSchema, TitleDescriptionMetricsGridImageId, TitleDescriptionMetricsGridImageName, TitleDescriptionMetricsGridImageDesc, "neo-swift", "TitleDescriptionMetricsGridImageLayout"), - createTemplateEntry(TitleDualComparisionBlockLayout, TitleDualComparisionBlockSchema, TitleDualComparisionBlockId, TitleDualComparisionBlockName, TitleDualComparisionBlockDesc, "neo-swift", "TitleDualComparisionBlockLayout"), - createTemplateEntry(TitleLabelDescriptionStatCardsLayout, TitleLabelDescriptionStatCardsSchema, TitleLabelDescriptionStatCardsId, TitleLabelDescriptionStatCardsName, TitleLabelDescriptionStatCardsDesc, "neo-swift", "TitleLabelDescriptionStatCardsLayout"), - createTemplateEntry(TitleSubtitleTeamMemberCardsLayout, TitleSubtitleTeamMemberCardsSchema, TitleSubtitleTeamMemberCardsId, TitleSubtitleTeamMemberCardsName, TitleSubtitleTeamMemberCardsDesc, "neo-swift", "TitleSubtitleTeamMemberCardsLayout"), - createTemplateEntry(TitleTaglineDescriptionNumberedStepsLayout, TitleTaglineDescriptionNumberedStepsSchema, TitleTaglineDescriptionNumberedStepsId, TitleTaglineDescriptionNumberedStepsName, TitleTaglineDescriptionNumberedStepsDesc, "neo-swift", "TitleTaglineDescriptionNumberedStepsLayout"), - createTemplateEntry(TitleThreeByThreeMetricsGridLayout, TitleThreeByThreeMetricsGridSchema, TitleThreeByThreeMetricsGridId, TitleThreeByThreeMetricsGridName, TitleThreeByThreeMetricsGridDesc, "neo-swift", "TitleThreeByThreeMetricsGridLayout"), - createTemplateEntry(TitleDescriptionSixChartsGridLayout, TitleDescriptionSixChartsGridSchema, TitleDescriptionSixChartsGridId, TitleDescriptionSixChartsGridName, TitleDescriptionSixChartsGridDesc, "neo-swift", "TitleDescriptionSixChartsGridLayout"), - createTemplateEntry(TitleDescriptionSixChartsFourMetricsLayout, TitleDescriptionSixChartsFourMetricsSchema, TitleDescriptionSixChartsFourMetricsId, TitleDescriptionSixChartsFourMetricsName, TitleDescriptionSixChartsFourMetricsDesc, "neo-swift", "TitleDescriptionSixChartsFourMetricsLayout"), - createTemplateEntry(TitleDescriptionFourChartsSixBulletsLayout, TitleDescriptionFourChartsSixBulletsSchema, TitleDescriptionFourChartsSixBulletsId, TitleDescriptionFourChartsSixBulletsName, TitleDescriptionFourChartsSixBulletsDesc, "neo-swift", "TitleDescriptionFourChartsSixBulletsLayout"), -] + createTemplateEntry( + TitleCenteredChartLayout, + TitleCenteredChartSchema, + TitleCenteredChartId, + TitleCenteredChartName, + TitleCenteredChartDesc, + "neo-swift", + "TitleCenteredChartLayout" + ), + createTemplateEntry( + TitleChartMetricsSidebarLayout, + TitleChartMetricsSidebarSchema, + TitleChartMetricsSidebarId, + TitleChartMetricsSidebarName, + TitleChartMetricsSidebarDesc, + "neo-swift", + "TitleChartMetricsSidebarLayout" + ), + createTemplateEntry( + TitleDescriptionBulletListLayout, + TitleDescriptionBulletListSchema, + TitleDescriptionBulletListId, + TitleDescriptionBulletListName, + TitleDescriptionBulletListDesc, + "neo-swift", + "TitleDescriptionBulletListLayout" + ), + createTemplateEntry( + TitleDescriptionDataTableLayout, + TitleDescriptionDataTableSchema, + TitleDescriptionDataTableId, + TitleDescriptionDataTableName, + TitleDescriptionDataTableDesc, + "neo-swift", + "TitleDescriptionDataTableLayout" + ), + createTemplateEntry( + TitleDescriptionImageRightSwiftLayout, + TitleDescriptionImageRightSwiftSchema, + TitleDescriptionImageRightSwiftId, + TitleDescriptionImageRightSwiftName, + TitleDescriptionImageRightSwiftDesc, + "neo-swift", + "TitleDescriptionImageRightSwiftLayout" + ), + createTemplateEntry( + TitleDescriptionMetricsGridLayout, + TitleDescriptionMetricsGridSchema, + TitleDescriptionMetricsGridId, + TitleDescriptionMetricsGridName, + TitleDescriptionMetricsGridDesc, + "neo-swift", + "TitleDescriptionMetricsGridLayout" + ), + createTemplateEntry( + TitleDescriptionMetricsGridImageLayout, + TitleDescriptionMetricsGridImageSchema, + TitleDescriptionMetricsGridImageId, + TitleDescriptionMetricsGridImageName, + TitleDescriptionMetricsGridImageDesc, + "neo-swift", + "TitleDescriptionMetricsGridImageLayout" + ), + createTemplateEntry( + TitleDualComparisionBlockLayout, + TitleDualComparisionBlockSchema, + TitleDualComparisionBlockId, + TitleDualComparisionBlockName, + TitleDualComparisionBlockDesc, + "neo-swift", + "TitleDualComparisionBlockLayout" + ), + createTemplateEntry( + TitleLabelDescriptionStatCardsLayout, + TitleLabelDescriptionStatCardsSchema, + TitleLabelDescriptionStatCardsId, + TitleLabelDescriptionStatCardsName, + TitleLabelDescriptionStatCardsDesc, + "neo-swift", + "TitleLabelDescriptionStatCardsLayout" + ), + createTemplateEntry( + TitleSubtitleTeamMemberCardsLayout, + TitleSubtitleTeamMemberCardsSchema, + TitleSubtitleTeamMemberCardsId, + TitleSubtitleTeamMemberCardsName, + TitleSubtitleTeamMemberCardsDesc, + "neo-swift", + "TitleSubtitleTeamMemberCardsLayout" + ), + createTemplateEntry( + TitleTaglineDescriptionNumberedStepsLayout, + TitleTaglineDescriptionNumberedStepsSchema, + TitleTaglineDescriptionNumberedStepsId, + TitleTaglineDescriptionNumberedStepsName, + TitleTaglineDescriptionNumberedStepsDesc, + "neo-swift", + "TitleTaglineDescriptionNumberedStepsLayout" + ), + createTemplateEntry( + TitleThreeByThreeMetricsGridLayout, + TitleThreeByThreeMetricsGridSchema, + TitleThreeByThreeMetricsGridId, + TitleThreeByThreeMetricsGridName, + TitleThreeByThreeMetricsGridDesc, + "neo-swift", + "TitleThreeByThreeMetricsGridLayout" + ), + createTemplateEntry( + TitleDescriptionSixChartsGridLayout, + TitleDescriptionSixChartsGridSchema, + TitleDescriptionSixChartsGridId, + TitleDescriptionSixChartsGridName, + TitleDescriptionSixChartsGridDesc, + "neo-swift", + "TitleDescriptionSixChartsGridLayout" + ), + createTemplateEntry( + TitleDescriptionSixChartsFourMetricsLayout, + TitleDescriptionSixChartsFourMetricsSchema, + TitleDescriptionSixChartsFourMetricsId, + TitleDescriptionSixChartsFourMetricsName, + TitleDescriptionSixChartsFourMetricsDesc, + "neo-swift", + "TitleDescriptionSixChartsFourMetricsLayout" + ), + createTemplateEntry( + TitleDescriptionFourChartsSixBulletsLayout, + TitleDescriptionFourChartsSixBulletsSchema, + TitleDescriptionFourChartsSixBulletsId, + TitleDescriptionFourChartsSixBulletsName, + TitleDescriptionFourChartsSixBulletsDesc, + "neo-swift", + "TitleDescriptionFourChartsSixBulletsLayout" + ), +]; // General templates array export const generalTemplates: TemplateWithData[] = [ - - createTemplateEntry(GeneralIntroSlideLayout, GeneralIntroSchema, GeneralIntroId, GeneralIntroName, GeneralIntroDesc, "general", "IntroSlideLayout"), - createTemplateEntry(BasicInfoSlideLayout, BasicInfoSchema, BasicInfoId, BasicInfoName, BasicInfoDesc, "general", "BasicInfoSlideLayout"), - createTemplateEntry(BulletIconsOnlySlideLayout, BulletIconsOnlySchema, BulletIconsOnlyId, BulletIconsOnlyName, BulletIconsOnlyDesc, "general", "BulletIconsOnlySlideLayout"), - createTemplateEntry(BulletWithIconsSlideLayout, BulletWithIconsSchema, BulletWithIconsId, BulletWithIconsName, BulletWithIconsDesc, "general", "BulletWithIconsSlideLayout"), - createTemplateEntry(ChartWithBulletsSlideLayout, ChartWithBulletsSchema, ChartWithBulletsId, ChartWithBulletsName, ChartWithBulletsDesc, "general", "ChartWithBulletsSlideLayout"), - createTemplateEntry(MetricsSlideLayout, MetricsSchema, MetricsId, MetricsName, MetricsDesc, "general", "MetricsSlideLayout"), - createTemplateEntry(MetricsWithImageSlideLayout, MetricsWithImageSchema, MetricsWithImageId, MetricsWithImageName, MetricsWithImageDesc, "general", "MetricsWithImageSlideLayout"), - createTemplateEntry(NumberedBulletsSlideLayout, NumberedBulletsSchema, NumberedBulletsId, NumberedBulletsName, NumberedBulletsDesc, "general", "NumberedBulletsSlideLayout"), - createTemplateEntry(QuoteSlideLayout, QuoteSchema, QuoteId, QuoteName, QuoteDesc, "general", "QuoteSlideLayout"), - createTemplateEntry(TableInfoSlideLayout, TableInfoSchema, TableInfoId, TableInfoName, TableInfoDesc, "general", "TableInfoSlideLayout"), - createTemplateEntry(TableOfContentsSlideLayout, TableOfContentsSchema, TableOfContentsId, TableOfContentsName, TableOfContentsDesc, "general", "TableOfContentsSlideLayout"), - createTemplateEntry(TeamSlideLayout, TeamSchema, TeamId, TeamName, TeamDesc, "general", "TeamSlideLayout"), + createTemplateEntry( + GeneralIntroSlideLayout, + GeneralIntroSchema, + GeneralIntroId, + GeneralIntroName, + GeneralIntroDesc, + "general", + "IntroSlideLayout" + ), + createTemplateEntry( + BasicInfoSlideLayout, + BasicInfoSchema, + BasicInfoId, + BasicInfoName, + BasicInfoDesc, + "general", + "BasicInfoSlideLayout" + ), + createTemplateEntry( + BulletIconsOnlySlideLayout, + BulletIconsOnlySchema, + BulletIconsOnlyId, + BulletIconsOnlyName, + BulletIconsOnlyDesc, + "general", + "BulletIconsOnlySlideLayout" + ), + createTemplateEntry( + BulletWithIconsSlideLayout, + BulletWithIconsSchema, + BulletWithIconsId, + BulletWithIconsName, + BulletWithIconsDesc, + "general", + "BulletWithIconsSlideLayout" + ), + createTemplateEntry( + ChartWithBulletsSlideLayout, + ChartWithBulletsSchema, + ChartWithBulletsId, + ChartWithBulletsName, + ChartWithBulletsDesc, + "general", + "ChartWithBulletsSlideLayout" + ), + createTemplateEntry( + MetricsSlideLayout, + MetricsSchema, + MetricsId, + MetricsName, + MetricsDesc, + "general", + "MetricsSlideLayout" + ), + createTemplateEntry( + MetricsWithImageSlideLayout, + MetricsWithImageSchema, + MetricsWithImageId, + MetricsWithImageName, + MetricsWithImageDesc, + "general", + "MetricsWithImageSlideLayout" + ), + createTemplateEntry( + NumberedBulletsSlideLayout, + NumberedBulletsSchema, + NumberedBulletsId, + NumberedBulletsName, + NumberedBulletsDesc, + "general", + "NumberedBulletsSlideLayout" + ), + createTemplateEntry( + QuoteSlideLayout, + QuoteSchema, + QuoteId, + QuoteName, + QuoteDesc, + "general", + "QuoteSlideLayout" + ), + createTemplateEntry( + TableInfoSlideLayout, + TableInfoSchema, + TableInfoId, + TableInfoName, + TableInfoDesc, + "general", + "TableInfoSlideLayout" + ), + createTemplateEntry( + TableOfContentsSlideLayout, + TableOfContentsSchema, + TableOfContentsId, + TableOfContentsName, + TableOfContentsDesc, + "general", + "TableOfContentsSlideLayout" + ), + createTemplateEntry( + TeamSlideLayout, + TeamSchema, + TeamId, + TeamName, + TeamDesc, + "general", + "TeamSlideLayout" + ), ]; - // Modern templates array export const modernTemplates: TemplateWithData[] = [ - createTemplateEntry(ModernIntroSlideLayout, ModernIntroSchema, ModernIntroId, ModernIntroName, ModernIntroDesc, "modern", "IntroSlideLayout"), - createTemplateEntry(BulletsWithIconsDescriptionGrid, BulletsIconsGridSchema, BulletsIconsGridId, BulletsIconsGridName, BulletsIconsGridDesc, "modern", "BulletsWithIconsDescriptionGrid"), - createTemplateEntry(ModernBulletWithIconsSlideLayout, ModernBulletIconsSchema, ModernBulletIconsId, ModernBulletIconsName, ModernBulletIconsDesc, "modern", "BulletWithIconsSlideLayout"), - createTemplateEntry(ChartOrTableWithDescription, ChartTableDescSchema, ChartTableDescId, ChartTableDescName, ChartTableDescDesc, "modern", "ChartOrTableWithDescription"), - createTemplateEntry(ChartOrTableWithMetricsDescription, ChartMetricsSchema, ChartMetricsId, ChartMetricsName, ChartMetricsDesc, "modern", "ChartOrTableWithMetricsDescription"), - createTemplateEntry(ImageAndDescriptionLayout, ImageDescSchema, ImageDescId, ImageDescName, ImageDescDesc, "modern", "ImageAndDescriptionLayout"), - createTemplateEntry(ImageListWithDescriptionSlideLayout, ImageListDescSchema, ImageListDescId, ImageListDescName, ImageListDescDesc, "modern", "ImageListWithDescriptionSlideLayout"), - createTemplateEntry(ImagesWithDescriptionLayout, ImagesDescSchema, ImagesDescId, ImagesDescName, ImagesDescDesc, "modern", "ImagesWithDescriptionLayout"), - createTemplateEntry(MetricsWithDescription, MetricsDescSchema, MetricsDescId, MetricsDescName, MetricsDescDesc, "modern", "MetricsWithDescription"), - createTemplateEntry(ModernTableOfContentsLayout, ModernTocSchema, ModernTocId, ModernTocName, ModernTocDesc, "modern", "TableOfContentsLayout"), + createTemplateEntry( + ModernIntroSlideLayout, + ModernIntroSchema, + ModernIntroId, + ModernIntroName, + ModernIntroDesc, + "modern", + "IntroSlideLayout" + ), + createTemplateEntry( + BulletsWithIconsDescriptionGrid, + BulletsIconsGridSchema, + BulletsIconsGridId, + BulletsIconsGridName, + BulletsIconsGridDesc, + "modern", + "BulletsWithIconsDescriptionGrid" + ), + createTemplateEntry( + ModernBulletWithIconsSlideLayout, + ModernBulletIconsSchema, + ModernBulletIconsId, + ModernBulletIconsName, + ModernBulletIconsDesc, + "modern", + "BulletWithIconsSlideLayout" + ), + createTemplateEntry( + ChartOrTableWithDescription, + ChartTableDescSchema, + ChartTableDescId, + ChartTableDescName, + ChartTableDescDesc, + "modern", + "ChartOrTableWithDescription" + ), + createTemplateEntry( + ChartOrTableWithMetricsDescription, + ChartMetricsSchema, + ChartMetricsId, + ChartMetricsName, + ChartMetricsDesc, + "modern", + "ChartOrTableWithMetricsDescription" + ), + createTemplateEntry( + ImageAndDescriptionLayout, + ImageDescSchema, + ImageDescId, + ImageDescName, + ImageDescDesc, + "modern", + "ImageAndDescriptionLayout" + ), + createTemplateEntry( + ImageListWithDescriptionSlideLayout, + ImageListDescSchema, + ImageListDescId, + ImageListDescName, + ImageListDescDesc, + "modern", + "ImageListWithDescriptionSlideLayout" + ), + createTemplateEntry( + ImagesWithDescriptionLayout, + ImagesDescSchema, + ImagesDescId, + ImagesDescName, + ImagesDescDesc, + "modern", + "ImagesWithDescriptionLayout" + ), + createTemplateEntry( + MetricsWithDescription, + MetricsDescSchema, + MetricsDescId, + MetricsDescName, + MetricsDescDesc, + "modern", + "MetricsWithDescription" + ), + createTemplateEntry( + ModernTableOfContentsLayout, + ModernTocSchema, + ModernTocId, + ModernTocName, + ModernTocDesc, + "modern", + "TableOfContentsLayout" + ), ]; // Standard templates array export const standardTemplates: TemplateWithData[] = [ - createTemplateEntry(StandardIntroSlideLayout, StandardIntroSchema, StandardIntroId, StandardIntroName, StandardIntroDesc, "standard", "IntroSlideLayout"), - createTemplateEntry(ChartLeftTextRightLayout, ChartLeftSchema, ChartLeftId, ChartLeftName, ChartLeftDesc, "standard", "ChartLeftTextRightLayout"), - createTemplateEntry(ContactLayout, ContactSchema, ContactId, ContactName, ContactDesc, "standard", "ContactLayout"), - createTemplateEntry(HeadingBulletImageDescriptionLayout, HeadingBulletSchema, HeadingBulletId, HeadingBulletName, HeadingBulletDesc, "standard", "HeadingBulletImageDescriptionLayout"), - createTemplateEntry(IconBulletDescriptionLayout, IconBulletSchema, IconBulletId, IconBulletName, IconBulletDesc, "standard", "IconBulletDescriptionLayout"), - createTemplateEntry(IconImageDescriptionLayout, IconImageSchema, IconImageId, IconImageName, IconImageDesc, "standard", "IconImageDescriptionLayout"), - createTemplateEntry(StandardImageListWithDescriptionLayout, StdImageListSchema, StdImageListId, StdImageListName, StdImageListDesc, "standard", "ImageListWithDescriptionLayout"), - createTemplateEntry(MetricsDescriptionLayout, MetricsDescLayoutSchema, MetricsDescLayoutId, MetricsDescLayoutName, MetricsDescLayoutDesc, "standard", "MetricsDescriptionLayout"), - createTemplateEntry(NumberedBulletSingleImageLayout, NumBulletImgSchema, NumBulletImgId, NumBulletImgName, NumBulletImgDesc, "standard", "NumberedBulletSingleImageLayout"), - createTemplateEntry(StandardTableOfContentsLayout, StdTocSchema, StdTocId, StdTocName, StdTocDesc, "standard", "TableOfContentsLayout"), - createTemplateEntry(VisualMetricsSlideLayout, VisualMetricsSchema, VisualMetricsId, VisualMetricsName, VisualMetricsDesc, "standard", "VisualMetricsSlideLayout"), + createTemplateEntry( + StandardIntroSlideLayout, + StandardIntroSchema, + StandardIntroId, + StandardIntroName, + StandardIntroDesc, + "standard", + "IntroSlideLayout" + ), + createTemplateEntry( + ChartLeftTextRightLayout, + ChartLeftSchema, + ChartLeftId, + ChartLeftName, + ChartLeftDesc, + "standard", + "ChartLeftTextRightLayout" + ), + createTemplateEntry( + ContactLayout, + ContactSchema, + ContactId, + ContactName, + ContactDesc, + "standard", + "ContactLayout" + ), + createTemplateEntry( + HeadingBulletImageDescriptionLayout, + HeadingBulletSchema, + HeadingBulletId, + HeadingBulletName, + HeadingBulletDesc, + "standard", + "HeadingBulletImageDescriptionLayout" + ), + createTemplateEntry( + IconBulletDescriptionLayout, + IconBulletSchema, + IconBulletId, + IconBulletName, + IconBulletDesc, + "standard", + "IconBulletDescriptionLayout" + ), + createTemplateEntry( + IconImageDescriptionLayout, + IconImageSchema, + IconImageId, + IconImageName, + IconImageDesc, + "standard", + "IconImageDescriptionLayout" + ), + createTemplateEntry( + StandardImageListWithDescriptionLayout, + StdImageListSchema, + StdImageListId, + StdImageListName, + StdImageListDesc, + "standard", + "ImageListWithDescriptionLayout" + ), + createTemplateEntry( + MetricsDescriptionLayout, + MetricsDescLayoutSchema, + MetricsDescLayoutId, + MetricsDescLayoutName, + MetricsDescLayoutDesc, + "standard", + "MetricsDescriptionLayout" + ), + createTemplateEntry( + NumberedBulletSingleImageLayout, + NumBulletImgSchema, + NumBulletImgId, + NumBulletImgName, + NumBulletImgDesc, + "standard", + "NumberedBulletSingleImageLayout" + ), + createTemplateEntry( + StandardTableOfContentsLayout, + StdTocSchema, + StdTocId, + StdTocName, + StdTocDesc, + "standard", + "TableOfContentsLayout" + ), + createTemplateEntry( + VisualMetricsSlideLayout, + VisualMetricsSchema, + VisualMetricsId, + VisualMetricsName, + VisualMetricsDesc, + "standard", + "VisualMetricsSlideLayout" + ), ]; // Swift templates array export const swiftTemplates: TemplateWithData[] = [ - createTemplateEntry(SwiftIntroSlideLayout, SwiftIntroSchema, SwiftIntroId, SwiftIntroName, SwiftIntroDesc, "swift", "IntroSlideLayout"), - createTemplateEntry(BulletsWithIconsTitleDescription, BulletsIconsTitleSchema, BulletsIconsTitleId, BulletsIconsTitleName, BulletsIconsTitleDesc, "swift", "BulletsWithIconsTitleDescription"), - createTemplateEntry(IconBulletListDescription, IconBulletListSchema, IconBulletListId, IconBulletListName, IconBulletListDesc, "swift", "IconBulletListDescription"), - createTemplateEntry(ImageListDescription, ImageListSchema, ImageListId, ImageListName, ImageListDesc, "swift", "ImageListDescription"), - createTemplateEntry(MetricsNumbers, MetricsNumbersSchema, MetricsNumbersId, MetricsNumbersName, MetricsNumbersDesc, "swift", "MetricsNumbers"), - createTemplateEntry(SimpleBulletPointsLayout, SimpleBulletSchema, SimpleBulletId, SimpleBulletName, SimpleBulletDesc, "swift", "SimpleBulletPointsLayout"), - createTemplateEntry(SwiftTableOfContents, SwiftTocSchema, SwiftTocId, SwiftTocName, SwiftTocDesc, "swift", "TableOfContents"), - createTemplateEntry(TableorChart, TableChartSchema, TableChartId, TableChartName, TableChartDesc, "swift", "TableorChart"), - createTemplateEntry(Timeline, TimelineSchema, TimelineId, TimelineName, TimelineDesc, "swift", "Timeline"), + createTemplateEntry( + SwiftIntroSlideLayout, + SwiftIntroSchema, + SwiftIntroId, + SwiftIntroName, + SwiftIntroDesc, + "swift", + "IntroSlideLayout" + ), + createTemplateEntry( + BulletsWithIconsTitleDescription, + BulletsIconsTitleSchema, + BulletsIconsTitleId, + BulletsIconsTitleName, + BulletsIconsTitleDesc, + "swift", + "BulletsWithIconsTitleDescription" + ), + createTemplateEntry( + IconBulletListDescription, + IconBulletListSchema, + IconBulletListId, + IconBulletListName, + IconBulletListDesc, + "swift", + "IconBulletListDescription" + ), + createTemplateEntry( + ImageListDescription, + ImageListSchema, + ImageListId, + ImageListName, + ImageListDesc, + "swift", + "ImageListDescription" + ), + createTemplateEntry( + MetricsNumbers, + MetricsNumbersSchema, + MetricsNumbersId, + MetricsNumbersName, + MetricsNumbersDesc, + "swift", + "MetricsNumbers" + ), + createTemplateEntry( + SimpleBulletPointsLayout, + SimpleBulletSchema, + SimpleBulletId, + SimpleBulletName, + SimpleBulletDesc, + "swift", + "SimpleBulletPointsLayout" + ), + createTemplateEntry( + SwiftTableOfContents, + SwiftTocSchema, + SwiftTocId, + SwiftTocName, + SwiftTocDesc, + "swift", + "TableOfContents" + ), + createTemplateEntry( + TableorChart, + TableChartSchema, + TableChartId, + TableChartName, + TableChartDesc, + "swift", + "TableorChart" + ), + createTemplateEntry( + Timeline, + TimelineSchema, + TimelineId, + TimelineName, + TimelineDesc, + "swift", + "Timeline" + ), ]; // TODO: Step 4: Combine all templates into a single array For UseCases (like the ones below) // All templates combined export const allLayouts: TemplateWithData[] = [ - ...neoGeneralTemplates, - ...neoModernTemplates, - ...neoStandardTemplates, - ...neoSwiftTemplates, - ...generalTemplates, - ...modernTemplates, - ...standardTemplates, - ...swiftTemplates, - ...codeTemplates, - ...educationTemplates, - ...productOverviewTemplates, - ...reportTemplates, + ...neoGeneralTemplates, + ...neoModernTemplates, + ...neoStandardTemplates, + ...neoSwiftTemplates, + ...generalTemplates, + ...modernTemplates, + ...standardTemplates, + ...swiftTemplates, + ...codeTemplates, + ...educationTemplates, + ...productOverviewTemplates, + ...reportTemplates, + ...pitchDeckTemplates, ]; - // TODO: Step 5: Combine all templates into a single array For UseCases (like the ones below) // For UseCases we need to combine all templates into a single array with settings export const templates: TemplateLayoutsWithSettings[] = [ - { - id: "general", - name: "General", - description: generalSettings.description, - settings: generalSettings as TemplateGroupSettings, - layouts: generalTemplates, - }, - { - id: "modern", - name: "Modern", - description: modernSettings.description, - settings: modernSettings as TemplateGroupSettings, - layouts: modernTemplates, - }, - { - id: "standard", - name: "Standard", - description: standardSettings.description, - settings: standardSettings as TemplateGroupSettings, - layouts: standardTemplates, - }, - { - id: "swift", - name: "Swift", - description: swiftSettings.description, - settings: swiftSettings as TemplateGroupSettings, - layouts: swiftTemplates, - }, - { - id: "code", - name: "Code", - description: codeSettings.description, - settings: codeSettings as TemplateGroupSettings, - layouts: codeTemplates, - }, - { - id: "education", - name: "Education", - description: educationSettings.description, - settings: educationSettings as TemplateGroupSettings, - layouts: educationTemplates, - }, - { - id: "product-overview", - name: "Product Overview", - description: productOverviewSettings.description, - settings: productOverviewSettings as TemplateGroupSettings, - layouts: productOverviewTemplates, - }, - { - id: "report", - name: "Report", - description: reportSettings.description, - settings: reportSettings as TemplateGroupSettings, - layouts: reportTemplates, - }, - { - id: "neo-general", - name: "Neo General", - description: neoGeneralSettings.description, - settings: neoGeneralSettings as TemplateGroupSettings, - layouts: neoGeneralTemplates, - }, - { - id: "neo-standard", - name: "Neo Standard", - description: neoStandardSettings.description, - settings: neoStandardSettings as TemplateGroupSettings, - layouts: neoStandardTemplates, - }, - { - id: "neo-modern", - name: "Neo Modern", - description: neoModernSettings.description, - settings: neoModernSettings as TemplateGroupSettings, - layouts: neoModernTemplates, - }, - { - id: "neo-swift", - name: "Neo Swift", - description: neoSwiftSettings.description, - settings: neoSwiftSettings as TemplateGroupSettings, - layouts: neoSwiftTemplates, - }, - - + { + id: "general", + name: "General", + description: generalSettings.description, + settings: generalSettings as TemplateGroupSettings, + layouts: generalTemplates, + }, + { + id: "modern", + name: "Modern", + description: modernSettings.description, + settings: modernSettings as TemplateGroupSettings, + layouts: modernTemplates, + }, + { + id: "standard", + name: "Standard", + description: standardSettings.description, + settings: standardSettings as TemplateGroupSettings, + layouts: standardTemplates, + }, + { + id: "swift", + name: "Swift", + description: swiftSettings.description, + settings: swiftSettings as TemplateGroupSettings, + layouts: swiftTemplates, + }, + { + id: "code", + name: "Code", + description: codeSettings.description, + settings: codeSettings as TemplateGroupSettings, + layouts: codeTemplates, + }, + { + id: "education", + name: "Education", + description: educationSettings.description, + settings: educationSettings as TemplateGroupSettings, + layouts: educationTemplates, + }, + { + id: "product-overview", + name: "Product Overview", + description: productOverviewSettings.description, + settings: productOverviewSettings as TemplateGroupSettings, + layouts: productOverviewTemplates, + }, + { + id: "report", + name: "Report", + description: reportSettings.description, + settings: reportSettings as TemplateGroupSettings, + layouts: reportTemplates, + }, + { + id: "pitch-deck", + name: "Pitch Deck", + description: pitchDeckSettings.description, + settings: pitchDeckSettings as TemplateGroupSettings, + layouts: pitchDeckTemplates, + }, + { + id: "neo-general", + name: "Neo General", + description: neoGeneralSettings.description, + settings: neoGeneralSettings as TemplateGroupSettings, + layouts: neoGeneralTemplates, + }, + { + id: "neo-standard", + name: "Neo Standard", + description: neoStandardSettings.description, + settings: neoStandardSettings as TemplateGroupSettings, + layouts: neoStandardTemplates, + }, + { + id: "neo-modern", + name: "Neo Modern", + description: neoModernSettings.description, + settings: neoModernSettings as TemplateGroupSettings, + layouts: neoModernTemplates, + }, + { + id: "neo-swift", + name: "Neo Swift", + description: neoSwiftSettings.description, + settings: neoSwiftSettings as TemplateGroupSettings, + layouts: neoSwiftTemplates, + }, ]; // Helper to get templates by group ID -export function getTemplatesByTemplateName(templateId: string): TemplateWithData[] { - const template = templates.find((t) => t.id === templateId); - return template?.layouts || []; +export function getTemplatesByTemplateName( + templateId: string +): TemplateWithData[] { + const template = templates.find((t) => t.id === templateId); + return template?.layouts || []; } export function getSchemaByTemplateId(templateId: string): any { - const template = templates.find((t) => t.id === templateId); - return template?.layouts.map(t => { - return { - id: t.layoutId, - name: t.layoutName, - description: t.layoutDescription, - json_schema: t.schemaJSON, - } - }) || {}; + const template = templates.find((t) => t.id === templateId); + return ( + template?.layouts.map((t) => { + return { + id: t.layoutId, + name: t.layoutName, + description: t.layoutDescription, + json_schema: t.schemaJSON, + }; + }) || {} + ); } -export function getSettingsByTemplateId(templateId: string): TemplateGroupSettings | undefined { - const template = templates.find((t) => t.id === templateId); - return template?.settings || undefined; +export function getSettingsByTemplateId( + templateId: string +): TemplateGroupSettings | undefined { + const template = templates.find((t) => t.id === templateId); + return template?.settings || undefined; } // Helper to get template by layout ID -export function getTemplateByLayoutId(layoutId: string): TemplateWithData | undefined { - return allLayouts.find((t) => t.layoutId === layoutId); +export function getTemplateByLayoutId( + layoutId: string +): TemplateWithData | undefined { + return allLayouts.find((t) => t.layoutId === layoutId); } -export function getLayoutByLayoutId(layout: string): TemplateWithData | undefined { - const templateName = layout.split(':')[0] +export function getLayoutByLayoutId( + layout: string +): TemplateWithData | undefined { + const templateName = layout.split(":")[0]; - - const template = templates.find((t) => t.id === templateName) - if (template) { - return template.layouts.find((t) => t.layoutId === layout); - } - return undefined; -} \ No newline at end of file + const template = templates.find((t) => t.id === templateName); + if (template) { + return template.layouts.find((t) => t.layoutId === layout); + } + return undefined; +} diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx new file mode 100644 index 00000000..cf3f0c14 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx @@ -0,0 +1,195 @@ +import * as z from "zod"; + +import { ImageSchema } from "@/app/presentation-templates/defaultSchemes"; + +export const slideLayoutId = "adaptive-media-card-grid"; +export const slideLayoutName = "Adaptive Media Card Grid"; +export const slideLayoutDescription = + "A responsive media-card grid that supports compact and dense arrangements."; + +const CardSchema = z.object({ + label: z.string().max(14).meta({ + description: "Small top label shown on each card.", + }), + title: z.string().max(18).meta({ + description: "Primary card title.", + }), + description: z.string().max(40).meta({ + description: "Short supporting description.", + }), + image: ImageSchema.meta({ + description: "Media image.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Top heading text.", + }), + cards: z + .array(CardSchema) + + .max(8) + .default([ + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=12", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=13", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=14", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=12", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=13", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=14", + __image_prompt__: "Media card image", + }, + }, + ]) + .meta({ + description: "Media cards rendered in an adaptive grid.", + }), +}); + +export type SchemaType = z.infer; + +const CARD_WIDTH_BY_COUNT: Record = { + 3: 308, + 4: 227, + 8: 227, +}; + +const IMAGE_HEIGHT_BY_COUNT: Record = { + 3: 301, + 4: 222, + 8: 222, +}; + +const AdaptiveMediaCardGrid = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.cards.length; + + const columns = count <= 4 ? count : 4; + const cardWidth = CARD_WIDTH_BY_COUNT[count] ?? 236; + const imageHeight = IMAGE_HEIGHT_BY_COUNT[count] ?? 224; + + return ( + <> + + +
+
4 ? "10px" : "72px", + }} + > +

+ {slideData.title} +

+
+ +
+ {slideData.cards.map((card, index) => ( +
+ {card.image.__image_prompt__} + +
+

+ {card.label} +

+

+ {card.title} +

+

+ {card.description} +

+
+
+ ))} +
+
+ + ); +}; + +export default AdaptiveMediaCardGrid; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx new file mode 100644 index 00000000..1b9cd1fa --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx @@ -0,0 +1,254 @@ +import * as z from "zod"; + +export const slideLayoutId = "adaptive-value-card-grid"; +export const slideLayoutName = "Adaptive Value Card Grid"; +export const slideLayoutDescription = + "A card grid that supports even layouts and odd-count variants with an emphasized trailing card."; + +const ValueCardSchema = z.object({ + value: z.string().max(6).meta({ + description: "Primary card value text.", + }), + label: z.string().max(28).meta({ + description: "Secondary label under the card.", + }), + icon: z.object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Top-left heading.", + }), + items: z + .array(ValueCardSchema) + + .max(8) + .default([ + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + // { + // value: "X 5", label: "Lorem ipsum dolor sit.", icon: { + // __icon_url__: + // "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + // __icon_query__: "check icon", + // } + // }, + ]) + .meta({ + description: "Value cards displayed in an adaptive grid.", + }), +}); + +export type SchemaType = z.infer; + +const RIGHT_RATIO_BY_ODD_COUNT: Record = { + 3: "49%", + 5: "33%", + 7: "29%", +}; + +function Card({ + value, + label, + icon, +}: { + value: string; + label: string; + icon: any; +}) { + return ( +
+
+ + {icon.__icon_query__} + +

+ {value} +

+
+

+ {label} +

+
+ ); +} + +const AdaptiveValueCardGrid = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.items.length; + const isOdd = count % 2 === 1; + + const leftCards = isOdd ? slideData.items.slice(0, -1) : slideData.items; + const rightTallCard = isOdd + ? slideData.items[slideData.items.length - 1] + : null; + + const evenColumns = Math.max(2, Math.min(4, count / 2)); + const oddLeftColumns = Math.max(1, Math.ceil(leftCards.length / 2)); + const rightRatio = RIGHT_RATIO_BY_ODD_COUNT[count] ?? "33%"; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ + {!isOdd && ( +
+ {slideData.items.map((card, index) => ( + + ))} +
+ )} + + {isOdd && rightTallCard && ( +
+
+ {leftCards.map((card, index) => ( + + ))} +
+ + +
+ )} +
+ + ); +}; + +export default AdaptiveValueCardGrid; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx new file mode 100644 index 00000000..f38e3069 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx @@ -0,0 +1,237 @@ +"use client"; + +import * as z from "zod"; + +import PitchDeckChart from "./PitchDeckChart"; +import { ChartPayloadSchema } from "./pitchDeckSchemas"; + +export const slideLayoutId = "cards-with-chart-split"; +export const slideLayoutName = "Cards with Chart Split"; +export const slideLayoutDescription = + "A split layout with cards on the left and a chart panel on the right."; + +const DEFAULT_CHART = { + chartType: "line" as const, + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +const ValueCardSchema = z.object({ + value: z.string().max(6).meta({ + description: "Card value text.", + }), + label: z.string().max(28).meta({ + description: "Card supporting label.", + }), + icon: z.object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Main heading.", + }), + items: z + .array(ValueCardSchema) + + .max(4) + .default([ + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + ]) + .meta({ + description: "Cards shown beside the chart.", + }), + chart: ChartPayloadSchema.default(DEFAULT_CHART).meta({ + description: "Chart configuration for the right panel.", + }), + showAccentGlow: z.boolean().default(true).meta({ + description: + "Whether to render the subtle decorative glow near bottom-left.", + }), +}); + +export type SchemaType = z.infer; + +function Card({ + value, + label, + icon, +}: { + value: string; + label: string; + icon: { __icon_url__: string; __icon_query__: string }; +}) { + return ( +
+
+ + {icon.__icon_query__} + +

+ {value} +

+
+ +

+ {label} +

+
+ ); +} + +const CardsWithChartSplit = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+

+ {slideData.title} +

+
+
+
+ {slideData.items.map((card, index) => ( + + ))} +
+
+ +
+ +
+
+
+ + ); +}; + +export default CardsWithChartSplit; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx new file mode 100644 index 00000000..65e4ab5a --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx @@ -0,0 +1,78 @@ +import * as z from "zod"; + + +export const slideLayoutId = "centered-cover-with-footer-meta"; +export const slideLayoutName = "Centered Cover with Footer Metadata"; +export const slideLayoutDescription = + "A single-focus cover layout with centered title, subtitle, and footer metadata groups."; + +const FooterMetaSchema = z.object({ + label: z.string().max(14).meta({ + description: "Footer metadata label.", + }), + value: z.string().max(24).meta({ + description: "Footer metadata value.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(20).default("Presentation").meta({ + description: "Main centered cover title.", + }), + subtitle: z.string().max(34).default("WORKFORCE OPERATIONS").meta({ + description: "Subtitle beneath the title.", + }), + + footerItems: z + .array(FooterMetaSchema) + .max(2) + .default([ + { label: "PRESENTED BY", value: "PRESENTER NAME" }, + { label: "DATE", value: "2026 DECEMBER 4" }, + ]) + .meta({ + description: "Footer metadata groups.", + }), +}); + +export type SchemaType = z.infer; + +const CenteredCoverWithFooterMeta = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.title} +

+

+ {slideData.subtitle} +

+
+ +
+ {slideData.footerItems.map((item, index) => ( +
+

+ {item.label} +

+

{item.value}

+
+ ))} +
+
+ + ); +}; + +export default CenteredCoverWithFooterMeta; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx new file mode 100644 index 00000000..9cc65256 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx @@ -0,0 +1,55 @@ +import * as z from "zod"; + + +export const slideLayoutId = "full-width-statement"; +export const slideLayoutName = "Full-Width Statement"; +export const slideLayoutDescription = + "A minimalist emphasis layout with a compact label and a large full-width statement block."; + +export const Schema = z.object({ + label: z.string().max(12).default("Label").meta({ + description: "Small label above the statement.", + }), + statement: z + .string() + + .max(96) + .default("This is a sample statement used for placeholder content in presentations.") + .meta({ + description: "Main statement text.", + }), +}); + +export type SchemaType = z.infer; + +const FullWidthStatement = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.label} +

+ +

+ {slideData.statement}” +

+
+ + +
+ + ); +}; + +export default FullWidthStatement; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx new file mode 100644 index 00000000..d4235126 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx @@ -0,0 +1,130 @@ +import * as z from "zod"; + + +export const slideLayoutId = "headline-with-detail-columns"; +export const slideLayoutName = "Headline with Detail Columns"; +export const slideLayoutDescription = + "A layout with a large headline and detail columns containing markers, text, and bullets."; + +const SectionSchema = z.object({ + number: z.string().max(2).meta({ + description: "Numeric marker value.", + }), + title: z.string().max(16).meta({ + description: "Section title.", + }), + description: z.string().max(150).meta({ + description: "Section paragraph.", + }), + bullets: z.array(z.string().max(40)).max(4).meta({ + description: "Bullet list content.", + }), + highlighted: z.boolean().default(false).meta({ + description: "Whether the top marker is filled.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(24).default("Focus Areas").meta({ + description: "Large left-side heading.", + }), + sections: z + .array(SectionSchema) + + .max(2) + .default([ + { + number: "1", + title: "Column A", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam.", + bullets: [ + "Ut enim ad minima veniam, quis nostrum", + "Exercitationem ullam corporis suscipit", + "Laboriosam, nisi ut alUt enim ad minima", + ], + highlighted: true, + }, + { + number: "2", + title: "Column B", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam.", + bullets: [ + "Ut enim ad minima veniam, quis nostrum", + "Exercitationem ullam corporis suscipit", + "Laboriosam, nisi ut alUt enim ad minima", + ], + highlighted: false, + }, + ]) + .meta({ + description: "Right-side detail columns.", + }), +}); + +export type SchemaType = z.infer; + +const HeadlineWithDetailColumns = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.title} +

+ + {slideData.sections.map((section, index) => ( +
+
+ {section.number} +
+ +

+ {section.title} +

+ +

+ {section.description} +

+ +
+ {section.bullets.map((bullet, bulletIndex) => ( +

+

+

{bullet}

+

+ ))} +
+
+ ))} +
+ + +
+ + ); +}; + +export default HeadlineWithDetailColumns; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx new file mode 100644 index 00000000..650e14f4 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx @@ -0,0 +1,315 @@ +import * as z from "zod"; + +export const slideLayoutId = "horizontal-timeline"; +export const slideLayoutName = "Horizontal Timeline"; +export const slideLayoutDescription = + "A horizontal timeline with step markers, item text, continuation state, and optional endpoint label."; + +const MAX_TIMELINE_ITEMS_PER_SLIDE = 5; +const DEFAULT_ICON = { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "shield check icon", +}; + +const TimelineItemSchema = z.object({ + label: z.string().max(10).meta({ + description: "Short label above marker icon.", + }), + icon: z + .object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }) + .default(DEFAULT_ICON), + title: z.string().max(16).meta({ + description: "Heading below marker icon.", + }), + description: z.string().max(132).meta({ + description: "Supporting copy for each timeline item.", + }), +}); + +const DEFAULT_DESCRIPTION = + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam."; + +export const Schema = z.object({ + title: z.string().max(18).default("Timeline").meta({ + description: "Top-left heading.", + }), + isContinue: z.boolean().default(false).meta({ + description: + "Whether this slide continues a previous timeline slide. Continuation slides use the Continue... heading and draw the axis in from the left edge.", + }), + showEndLabel: z.boolean().default(true).meta({ + description: "Whether to show right-end label near timeline axis.", + }), + endLabel: z.string().max(12).default("THE END").meta({ + description: "Right-end label text.", + }), + items: z + .array(TimelineItemSchema) + + .max(MAX_TIMELINE_ITEMS_PER_SLIDE) + .default([ + { + label: "Phase 1", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 2", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 3", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 4", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 5", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + ]) + .meta({ + description: "Timeline items from left to right.", + }), +}); + +export type SchemaType = z.infer; + +const SLIDE_WIDTH = 1280; +const TIMELINE_AXIS_Y = 355; +const TIMELINE_LEFT_CENTER = 106; +const TIMELINE_RIGHT_CENTER = 1058; +const THREE_STEP_CENTERS = [106, 580, 1058]; +const CONTINUATION_TITLE = "Continue..."; + +const getTimelineCenters = (count: number) => { + if (count === 3) { + return THREE_STEP_CENTERS; + } + + if (count <= 1) { + return [TIMELINE_LEFT_CENTER]; + } + + return Array.from({ length: count }, (_, index) => { + return ( + TIMELINE_LEFT_CENTER + + ((TIMELINE_RIGHT_CENTER - TIMELINE_LEFT_CENTER) * index) / (count - 1) + ); + }); +}; + +const getTimelineStyle = (count: number) => { + if (count <= 3) { + return { + badgeSize: 88, + labelTop: 268, + titleTop: 423, + contentWidth: 260, + labelFontSize: 25, + titleFontSize: 25, + bodyFontSize: 17, + }; + } + + if (count === 4) { + return { + badgeSize: 76, + labelTop: 274, + titleTop: 417, + contentWidth: 240, + labelFontSize: 23, + titleFontSize: 25, + bodyFontSize: 17, + }; + } + + return { + badgeSize: 66, + labelTop: 280, + titleTop: 412, + contentWidth: 210, + labelFontSize: 20, + titleFontSize: 25, + bodyFontSize: 17, + }; +}; + +function TimelineIconBadge({ + icon, + size, +}: { + icon: { __icon_url__: string; __icon_query__: string }; + size: number; +}) { + return ( + + {icon.__icon_query__} + + ); +} + +const HorizontalTimeline = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const timelineItems = slideData.items; + const timelineCenters = getTimelineCenters(timelineItems.length); + const timelineStyle = getTimelineStyle(timelineItems.length); + const firstCenter = timelineCenters[0] ?? TIMELINE_LEFT_CENTER; + const lastCenter = + timelineCenters[timelineCenters.length - 1] ?? TIMELINE_RIGHT_CENTER; + const axisStart = slideData.isContinue ? 0 : firstCenter; + const axisEnd = slideData.showEndLabel ? lastCenter : SLIDE_WIDTH; + const endLabelLeft = Math.min( + SLIDE_WIDTH - 152, + lastCenter + timelineStyle.badgeSize / 2 + 18 + ); + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ + {timelineItems.map((phase, index) => { + const centerX = timelineCenters[index] ?? TIMELINE_LEFT_CENTER; + const textLeft = Math.max( + 30, + Math.min( + SLIDE_WIDTH - timelineStyle.contentWidth - 30, + centerX - timelineStyle.badgeSize / 2 + ) + ); + + return ( +
+

+ {phase.label} +

+ +
+ +
+ +
+

+ {phase.title} +

+ +

+ {phase.description} +

+
+
+ ); + })} + + {slideData.showEndLabel && ( +

+ {slideData.endLabel} +

+ )} +
+ + ); +}; + +export default HorizontalTimeline; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx new file mode 100644 index 00000000..a46b6c50 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx @@ -0,0 +1,105 @@ +import * as z from "zod"; + +import { ImageSchema } from "@/app/presentation-templates/defaultSchemes"; + + +export const slideLayoutId = "media-and-text-split"; +export const slideLayoutName = "Media and Text Split"; +export const slideLayoutDescription = + "A split composition with a title and media block on the left and supporting narrative plus footer text on the right."; + +export const Schema = z.object({ + title: z.string().max(16).default("Overview").meta({ + description: "Left panel heading.", + }), + sidePanelMode: z.enum(["solid", "image"]).default("image").meta({ + description: "Left media panel mode.", + }), + sidePanelColor: z.string().max(20).default("#d3d0bc").meta({ + description: "Left media color used in solid mode.", + }), + sidePanelImage: ImageSchema.default({ + __image_url__: + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1400&q=80", + __image_prompt__: "Glass skyscraper perspective", + }).meta({ + description: "Left media image used in image mode.", + }), + headline: z + .string() + + .max(50) + .default("This is a sample text to tell story for audience is written here") + .meta({ + description: "Main headline text on the right.", + }), + body: z + .string() + + .max(128) + .default( + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam." + ) + .meta({ + description: "Supporting paragraph text.", + }), + footerText: z.string().max(28).default("Footer text").meta({ + description: "Footer text at the bottom-right.", + }), +}); + +export type SchemaType = z.infer; + +const MediaAndTextSplit = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+

+ {slideData.title} +

+
+
+ {slideData.sidePanelMode === "image" && ( + {slideData.sidePanelImage.__image_prompt__} + )} +
+
+
+ +

+ {slideData.headline} +

+

+ {slideData.body} +

+
+

+ {slideData.footerText} +

+
+
+ + +
+ + ); +}; + +export default MediaAndTextSplit; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx new file mode 100644 index 00000000..8494e2cb --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx @@ -0,0 +1,97 @@ +import * as z from "zod"; + + +export const slideLayoutId = "numbered-multi-column-overview"; +export const slideLayoutName = "Numbered Multi-Column Overview"; +export const slideLayoutDescription = + "A multi-column layout with numbered markers, short titles, and descriptive body text."; + +const ColumnSchema = z.object({ + marker: z.string().max(2).meta({ + description: "Circular marker value.", + }), + title: z.string().max(14).meta({ + description: "Column title.", + }), + description: z.string().max(118).meta({ + description: "Column description paragraph.", + }), + highlighted: z.boolean().default(false).meta({ + description: "Whether marker circle is filled.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Overview").meta({ + description: "Main heading text.", + }), + items: z + .array(ColumnSchema) + + .max(4) + .default([ + { marker: "1", title: "Heading 1", description: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", highlighted: true }, + { marker: "2", title: "Heading 2", description: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", highlighted: false }, + { marker: "3", title: "Heading 3", description: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", highlighted: false }, + // { marker: "4", title: "Heading 4", description: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", highlighted: false }, + ]) + .meta({ + description: "Columns rendered across the slide.", + }), +}); + +export type SchemaType = z.infer; + +const NumberedMultiColumnOverview = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const columns = slideData.items.length; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ {slideData.items.map((column, index) => ( +
+
+ {column.marker} +
+ +

+ {column.title} +

+ +

+ {column.description} +

+
+ ))} +
+ + +
+ + ); +}; + +export default NumberedMultiColumnOverview; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx new file mode 100644 index 00000000..e30f503d --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx @@ -0,0 +1,215 @@ +import * as z from "zod"; + +export const slideLayoutId = "overlapping-circle-cards"; +export const slideLayoutName = "Overlapping Circle Cards"; +export const slideLayoutDescription = + "A horizontal row of overlapping circular cards with markers, titles, and text."; + +const CardSchema = z.object({ + number: z.string().max(2).meta({ + description: "Short card marker.", + }), + title: z.string().max(16).meta({ + description: "Card title.", + }), + description: z.string().max(132).meta({ + description: "Card description text.", + }), +}); + +const DEFAULT_DESCRIPTION = + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam."; + +export const Schema = z.object({ + title: z.string().max(12).default("Cards").meta({ + description: "Main heading text.", + }), + items: z + .array(CardSchema) + + .max(5) + .default([ + { + number: "01", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "02", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "03", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "04", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "05", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + ]) + .meta({ + description: "Circle cards from left to right.", + }), +}); + +export type SchemaType = z.infer; + +const CIRCLE_CARD_LAYOUT_BY_COUNT: Record< + number, + { + circleSize: number; + connectorSize: number; + overlap: number; + rowLeft: number; + rowTop: number; + numberFontSize: number; + titleFontSize: number; + bodyFontSize: number; + bodyWidth: number; + } +> = { + 3: { + circleSize: 384, + connectorSize: 84, + overlap: -21, + rowLeft: 34, + rowTop: 238, + numberFontSize: 32, + titleFontSize: 30, + bodyFontSize: 20, + bodyWidth: 250, + }, + 4: { + circleSize: 318, + connectorSize: 70, + overlap: -21, + rowLeft: 44, + rowTop: 238, + numberFontSize: 30, + titleFontSize: 28, + bodyFontSize: 18, + bodyWidth: 214, + }, + 5: { + circleSize: 272, + connectorSize: 56, + overlap: -37, + rowLeft: 34, + rowTop: 238, + numberFontSize: 24, + titleFontSize: 22, + bodyFontSize: 16, + bodyWidth: 172, + }, +}; + +const getConnectorLeft = (overlap: number, connectorSize: number) => + (Math.abs(overlap) - connectorSize) / 2; + +const OverlappingCircleCards = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.items.length; + const layout = + CIRCLE_CARD_LAYOUT_BY_COUNT[count] ?? CIRCLE_CARD_LAYOUT_BY_COUNT[5]; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ {slideData.items.map((item, index) => ( +
+ {index > 0 && ( + + )} + +
+

+ {item.number} +

+

+ {item.title} +

+

+ {item.description} +

+
+
+ ))} +
+
+ + ); +}; + +export default OverlappingCircleCards; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx new file mode 100644 index 00000000..f8e97930 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx @@ -0,0 +1,201 @@ +import * as z from "zod"; + +import { ImageSchema } from "@/app/presentation-templates/defaultSchemes"; + +export const slideLayoutId = "panel-list-with-media"; +export const slideLayoutName = "Panel List with Media"; +export const slideLayoutDescription = + "A table layout with a left multi-column item list and a configurable right media or color panel."; + +const ItemSchema = z.object({ + title: z.string().max(18).meta({ + description: "Item title in the list.", + }), + number: z.string().max(2).meta({ + description: "Section number shown on the right.", + }), + description: z.string().max(50).optional().meta({ + description: "Optional item description used in description variants.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(14).default("List").meta({ + description: "Main heading text.", + }), + rowVariant: z + .enum(["titleOnly", "titleWithDescription"]) + .default("titleWithDescription") + .meta({ + description: "Layout variant for item rows.", + }), + sidePanelMode: z.enum(["solid", "image"]).default("solid").meta({ + description: "Right-side panel style.", + }), + + sidePanelImage: ImageSchema.default({ + __image_url__: + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1600&q=80", + __image_prompt__: "Skyscraper perspective photo", + }).meta({ + description: "Right-side panel image used in image mode.", + }), + items: z + .array(ItemSchema) + + .max(10) + .default([ + { + title: "Section Title", + number: "1", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Clarity", + number: "2", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Design Principles", + number: "3", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Visual Structure", + number: "4", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Typography", + number: "5", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Color & Space", + number: "6", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Audience Focus", + number: "7", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Layout System", + number: "8", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Presentation Flow", + number: "9", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Key Takeaways", + number: "10", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + ]) + .meta({ + description: "Items shown in the left panel.", + }), +}); + +export type SchemaType = z.infer; + +const PanelListWithMedia = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const showDescriptions = slideData.rowVariant === "titleWithDescription"; + + const midpoint = Math.ceil(slideData.items.length / 2); + const leftItems = slideData.items.slice(0, midpoint); + const rightItems = slideData.items.slice(midpoint); + + return ( + <> + + +
+
+
+

+ {slideData.title} +

+ +
+ {[leftItems, rightItems].map((column, columnIndex) => ( +
+ {column.map((item) => ( +
+
+

+ {item.title} +

+

+ {item.number} +

+
+ + {showDescriptions && ( +

+ {item.description ?? "Ut enim ad minima veniam."} +

+ )} +
+ ))} +
+ ))} +
+
+ +
+ {slideData.sidePanelMode === "image" && ( + {slideData.sidePanelImage.__image_prompt__} + )} +
+
+
+ + ); +}; + +export default PanelListWithMedia; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx new file mode 100644 index 00000000..696bdbed --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx @@ -0,0 +1,477 @@ +"use client"; + +import { + Bar, + BarChart, + CartesianGrid, + Cell, + LabelList, + Line, + LineChart, + Pie, + PieChart, + ResponsiveContainer, + Scatter, + ScatterChart, + XAxis, + YAxis, +} from "recharts"; + +export type PitchChartType = "bar" | "pie" | "scatter" | "stackedBar" | "line"; + +export type PitchBarDatum = { + label: string; + value: number; + value2?: number; +}; + +export type PitchPieDatum = { + label: string; + value: number; + color: string; +}; + +export type PitchScatterDatum = { + label: string; + value: number; +}; + +export type PitchChartPayload = { + chartType: PitchChartType; + legendLabel: string; + yAxisLabel: string; + barData: PitchBarDatum[]; + pieData: PitchPieDatum[]; + scatterData: PitchScatterDatum[]; + lineData: PitchBarDatum[]; + stackedBarData: PitchBarDatum[]; +}; + +type Props = { + payload?: Partial | null; +}; + +type PieLabelProps = { + cx?: number; + cy?: number; + midAngle?: number; + outerRadius?: number; + value?: string | number; +}; + +const DEFAULT_CHART_COLORS = [ + "#8B5CF6", + "#06B6D4", + "#10B981", + "#F59E0B", + "#EF4444", + "#EC4899", +]; +const AXIS = "var(--background-text,#d8d4bf)"; +const GRID = "var(--background-text,#585a61)"; +const CHART_RIGHT_MARGIN = 36; + +const graphColors = (index: number, fallbackColor?: string) => { + const fallback = + fallbackColor || DEFAULT_CHART_COLORS[index % DEFAULT_CHART_COLORS.length]; + return `var(--graph-${index}, ${fallback})`; +}; +const DEFAULT_CHART_PAYLOAD: PitchChartPayload = { + chartType: "bar", + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "Mon", value: 7 }, + { label: "Tue", value: 2 }, + { label: "Wed", value: 92 }, + { label: "Thu", value: 15 }, + { label: "Fri", value: 91 }, + { label: "Sat", value: 73 }, + { label: "Sun", value: 56 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +function resolveChartPayload( + payload?: Partial | null +): PitchChartPayload { + return { + ...DEFAULT_CHART_PAYLOAD, + ...payload, + barData: payload?.barData?.length + ? payload.barData + : DEFAULT_CHART_PAYLOAD.barData, + pieData: payload?.pieData?.length + ? payload.pieData + : DEFAULT_CHART_PAYLOAD.pieData, + scatterData: payload?.scatterData?.length + ? payload.scatterData + : DEFAULT_CHART_PAYLOAD.scatterData, + lineData: payload?.lineData?.length + ? payload.lineData + : DEFAULT_CHART_PAYLOAD.lineData, + stackedBarData: payload?.stackedBarData?.length + ? payload.stackedBarData + : DEFAULT_CHART_PAYLOAD.stackedBarData, + chartType: payload?.chartType || DEFAULT_CHART_PAYLOAD.chartType, + legendLabel: payload?.legendLabel || DEFAULT_CHART_PAYLOAD.legendLabel, + yAxisLabel: payload?.yAxisLabel || DEFAULT_CHART_PAYLOAD.yAxisLabel, + }; +} + +function PiePercentLabel({ + cx = 0, + cy = 0, + midAngle = 0, + outerRadius = 0, + value = "", +}: PieLabelProps) { + const radius = outerRadius * 0.72; + const x = cx + radius * Math.cos((-midAngle * Math.PI) / 180); + const y = cy + radius * Math.sin((-midAngle * Math.PI) / 180); + const text = `${value}%`; + + return ( + + + + {text} + + + ); +} + +function Legend({ + label, + color = graphColors(0), +}: { + label: string; + color?: string; +}) { + return ( +
+ + {label} +
+ ); +} + +export default function PitchDeckChart({ payload }: Props) { + const { + chartType, + barData, + pieData, + scatterData, + lineData, + stackedBarData, + legendLabel, + yAxisLabel, + } = resolveChartPayload(payload); + + if (chartType === "pie") { + return ( +
+
+ + + ( + + )} + isAnimationActive={false} + > + {pieData.map((entry, index) => ( + + ))} + + + +
+ +
+ {pieData.map((entry, index) => ( + + + {entry.label} + + ))} +
+
+ ); + } + + if (chartType === "scatter") { + const points = scatterData.map((item, index) => ({ + x: index + 1, + y: item.value, + label: item.label, + })); + + return ( +
+
+ + + + + points[Number(value) - 1]?.label ?? "label" + } + tick={{ fill: AXIS, fontSize: 18 }} + axisLine={{ stroke: AXIS }} + tickLine={false} + /> + + + + +
+ +
+ ); + } + + if (chartType === "line") { + return ( +
+
+ + + + + + + + +
+ +
+ ); + } + + if (chartType === "stackedBar") { + return ( +
+
+ + + + + + + + + + + + +
+ +
+ ); + } + + return ( +
+
+ + + + + + + + + +
+ +
+ ); +} diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx b/electron/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx new file mode 100644 index 00000000..9048b796 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx @@ -0,0 +1,151 @@ +"use client"; + +import * as z from "zod"; + +import PitchDeckChart from "./PitchDeckChart"; +import { ChartPayloadSchema } from "./pitchDeckSchemas"; + +export const slideLayoutId = "text-and-chart-split-layout"; +export const slideLayoutName = "Text and Chart Split Layout"; +export const slideLayoutDescription = + "A split layout with narrative text on the left and a configurable chart canvas on the right."; + +const DEFAULT_CHART = { + chartType: "scatter" as const, + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Main heading on the left.", + }), + leadText: z + .string() + + .max(52) + .default("This is a sample text to tell story for audience is written here") + .meta({ + description: "Primary narrative line above supporting text.", + }), + supportingText: z + .string() + + .max(126) + .default( + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam." + ) + .meta({ + description: "Supporting paragraph text.", + }), + chart: ChartPayloadSchema.default(DEFAULT_CHART).meta({ + description: "Chart configuration payload rendered on the right side.", + }), + showAccentGlow: z.boolean().default(true).meta({ + description: + "Whether to render the subtle decorative glow near bottom-left.", + }), +}); + +export type SchemaType = z.infer; + +const TextAndChartSplit = ({ + data, +}: { + data: Partial; +}) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+
+

+ {slideData.title} +

+ +

+ {slideData.leadText} +

+ +

+ {slideData.supportingText} +

+
+ +
+ +
+
+
+ + ); +}; + +export default TextAndChartSplit; diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts b/electron/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts new file mode 100644 index 00000000..7966ff86 --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts @@ -0,0 +1,132 @@ +import * as z from "zod"; + +export const DARK_BG = "var(--background-color,#27292d)"; +export const ACCENT_TEXT = "var(--primary-color,#dddac7)"; +export const BODY_TEXT = "var(--primary-text,#d7d3be)"; +export const MUTED_TEXT = "var(--background-text,#cbc7b2)"; +export const BORDER = "var(--border-color,#8d8a7d)"; +export const SUBTLE_LINE = "var(--line-color,#4c4e53)"; + +export const ChartTypeSchema = z.enum(["bar", "pie", "scatter", "stackedBar", "line"]); + +export const BarDatumSchema = z.object({ + label: z.string().max(10).meta({ + description: "X-axis label for bar/line/stacked charts.", + }), + value: z.number().max(300).meta({ + description: "Primary numeric value.", + }), + value2: z.number().max(300).optional().meta({ + description: "Secondary stacked value when using stacked bar charts.", + }), +}); + +export const PieDatumSchema = z.object({ + label: z.string().max(16).meta({ + description: "Legend label for pie slices.", + }), + value: z.number().max(100).meta({ + description: "Slice percentage value.", + }), + color: z.string().max(20).meta({ + description: "Slice fill color.", + }), +}); + +export const ScatterDatumSchema = z.object({ + label: z.string().max(10).meta({ + description: "X-axis label for scatter points.", + }), + value: z.number().max(100).meta({ + description: "Y-axis value for the point.", + }), +}); + +export const ChartPayloadSchema = z.object({ + chartType: ChartTypeSchema.default("bar").meta({ + description: "Chart type rendered on the right side.", + }), + legendLabel: z.string().max(30).default("Series Label").meta({ + description: "Single-series legend label for non-pie charts.", + }), + yAxisLabel: z.string().max(16).default("Y axis name").meta({ + description: "Y-axis title used in scatter charts.", + }), + barData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ]) + .meta({ + description: "Dataset for regular bar charts.", + }), + pieData: z + .array(PieDatumSchema) + + .max(3) + .default([ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ]) + .meta({ + description: "Pie chart dataset.", + }), + scatterData: z + .array(ScatterDatumSchema) + + .max(10) + .default([ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ]) + .meta({ + description: "Scatter points for distribution charts.", + }), + lineData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ]) + .meta({ + description: "Dataset for line charts.", + }), + stackedBarData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ]) + .meta({ + description: "Dataset for stacked bar charts using value and value2.", + }), +}); diff --git a/electron/servers/nextjs/app/presentation-templates/pitch-deck/settings.json b/electron/servers/nextjs/app/presentation-templates/pitch-deck/settings.json new file mode 100644 index 00000000..f884723d --- /dev/null +++ b/electron/servers/nextjs/app/presentation-templates/pitch-deck/settings.json @@ -0,0 +1,5 @@ +{ + "description": "Dark, theme-ready presentation layouts with covers, structured content grids, timelines, narrative splits, and chart-driven slides", + "ordered": false, + "default": false +} diff --git a/servers/nextjs/app/presentation-templates/index.tsx b/servers/nextjs/app/presentation-templates/index.tsx index 443f1432..c72f8785 100644 --- a/servers/nextjs/app/presentation-templates/index.tsx +++ b/servers/nextjs/app/presentation-templates/index.tsx @@ -60,6 +60,20 @@ import PerformanceSnapshotSlide, { Schema as RepPerformanceSnapshotSchema, slide import ReportServicesSlide, { Schema as RepServicesSchema, slideLayoutId as RepServicesId, slideLayoutName as RepServicesName, slideLayoutDescription as RepServicesDesc } from "./Report/TitleWorkflowWithTitleDescriptionSlide"; import ReportTeamSlide, { Schema as RepTeamSchema, slideLayoutId as RepTeamId, slideLayoutName as RepTeamName, slideLayoutDescription as RepTeamDesc } from "./Report/HorizontalHeightSpanningImagesWithTitleSlide"; +// Pitch Deck templates +import PitchDeckCenteredCoverWithFooterMeta, { Schema as PitchDeckCenteredCoverWithFooterMetaSchema, slideLayoutId as PitchDeckCenteredCoverWithFooterMetaId, slideLayoutName as PitchDeckCenteredCoverWithFooterMetaName, slideLayoutDescription as PitchDeckCenteredCoverWithFooterMetaDesc } from "./pitch-deck/CenteredCoverWithFooterMeta"; +import PitchDeckFullWidthStatement, { Schema as PitchDeckFullWidthStatementSchema, slideLayoutId as PitchDeckFullWidthStatementId, slideLayoutName as PitchDeckFullWidthStatementName, slideLayoutDescription as PitchDeckFullWidthStatementDesc } from "./pitch-deck/FullWidthStatement"; +import PitchDeckMediaAndTextSplit, { Schema as PitchDeckMediaAndTextSplitSchema, slideLayoutId as PitchDeckMediaAndTextSplitId, slideLayoutName as PitchDeckMediaAndTextSplitName, slideLayoutDescription as PitchDeckMediaAndTextSplitDesc } from "./pitch-deck/MediaAndTextSplit"; +import PitchDeckTextAndChartSplit, { Schema as PitchDeckTextAndChartSplitSchema, slideLayoutId as PitchDeckTextAndChartSplitId, slideLayoutName as PitchDeckTextAndChartSplitName, slideLayoutDescription as PitchDeckTextAndChartSplitDesc } from "./pitch-deck/TextAndChartSplit"; +import PitchDeckCardsWithChartSplit, { Schema as PitchDeckCardsWithChartSplitSchema, slideLayoutId as PitchDeckCardsWithChartSplitId, slideLayoutName as PitchDeckCardsWithChartSplitName, slideLayoutDescription as PitchDeckCardsWithChartSplitDesc } from "./pitch-deck/CardsWithChartSplit"; +import PitchDeckAdaptiveValueCardGrid, { Schema as PitchDeckAdaptiveValueCardGridSchema, slideLayoutId as PitchDeckAdaptiveValueCardGridId, slideLayoutName as PitchDeckAdaptiveValueCardGridName, slideLayoutDescription as PitchDeckAdaptiveValueCardGridDesc } from "./pitch-deck/AdaptiveValueCardGrid"; +import PitchDeckAdaptiveMediaCardGrid, { Schema as PitchDeckAdaptiveMediaCardGridSchema, slideLayoutId as PitchDeckAdaptiveMediaCardGridId, slideLayoutName as PitchDeckAdaptiveMediaCardGridName, slideLayoutDescription as PitchDeckAdaptiveMediaCardGridDesc } from "./pitch-deck/AdaptiveMediaCardGrid"; +import PitchDeckHeadlineWithDetailColumns, { Schema as PitchDeckHeadlineWithDetailColumnsSchema, slideLayoutId as PitchDeckHeadlineWithDetailColumnsId, slideLayoutName as PitchDeckHeadlineWithDetailColumnsName, slideLayoutDescription as PitchDeckHeadlineWithDetailColumnsDesc } from "./pitch-deck/HeadlineWithDetailColumns"; +import PitchDeckNumberedMultiColumnOverview, { Schema as PitchDeckNumberedMultiColumnOverviewSchema, slideLayoutId as PitchDeckNumberedMultiColumnOverviewId, slideLayoutName as PitchDeckNumberedMultiColumnOverviewName, slideLayoutDescription as PitchDeckNumberedMultiColumnOverviewDesc } from "./pitch-deck/NumberedMultiColumnOverview"; +import PitchDeckPanelListWithMedia, { Schema as PitchDeckPanelListWithMediaSchema, slideLayoutId as PitchDeckPanelListWithMediaId, slideLayoutName as PitchDeckPanelListWithMediaName, slideLayoutDescription as PitchDeckPanelListWithMediaDesc } from "./pitch-deck/PanelListWithMedia"; +import PitchDeckHorizontalTimeline, { Schema as PitchDeckHorizontalTimelineSchema, slideLayoutId as PitchDeckHorizontalTimelineId, slideLayoutName as PitchDeckHorizontalTimelineName, slideLayoutDescription as PitchDeckHorizontalTimelineDesc } from "./pitch-deck/HorizontalTimeline"; +import PitchDeckOverlappingCircleCards, { Schema as PitchDeckOverlappingCircleCardsSchema, slideLayoutId as PitchDeckOverlappingCircleCardsId, slideLayoutName as PitchDeckOverlappingCircleCardsName, slideLayoutDescription as PitchDeckOverlappingCircleCardsDesc } from "./pitch-deck/OverlappingCircleCards"; + // General templates import GeneralIntroSlideLayout, { Schema as GeneralIntroSchema, layoutId as GeneralIntroId, layoutName as GeneralIntroName, layoutDescription as GeneralIntroDesc } from "./general/IntroSlideLayout"; import BasicInfoSlideLayout, { Schema as BasicInfoSchema, layoutId as BasicInfoId, layoutName as BasicInfoName, layoutDescription as BasicInfoDesc } from "./general/BasicInfoSlideLayout"; @@ -236,6 +250,7 @@ import codeSettings from "./Code/settings.json"; import educationSettings from "./Education/settings.json"; import productOverviewSettings from "./ProductOverview/settings.json"; import reportSettings from "./Report/settings.json"; +import pitchDeckSettings from "./pitch-deck/settings.json"; // Helper to create template entry @@ -304,6 +319,21 @@ export const reportTemplates: TemplateWithData[] = [ createTemplateEntry(ReportTeamSlide, RepTeamSchema, RepTeamId, RepTeamName, RepTeamDesc, "report", "HorizontalHeightSpanningImagesWithTitleSlide"), ]; +export const pitchDeckTemplates: TemplateWithData[] = [ + createTemplateEntry(PitchDeckCenteredCoverWithFooterMeta, PitchDeckCenteredCoverWithFooterMetaSchema, PitchDeckCenteredCoverWithFooterMetaId, PitchDeckCenteredCoverWithFooterMetaName, PitchDeckCenteredCoverWithFooterMetaDesc, "pitch-deck", "CenteredCoverWithFooterMeta"), + createTemplateEntry(PitchDeckFullWidthStatement, PitchDeckFullWidthStatementSchema, PitchDeckFullWidthStatementId, PitchDeckFullWidthStatementName, PitchDeckFullWidthStatementDesc, "pitch-deck", "FullWidthStatement"), + createTemplateEntry(PitchDeckMediaAndTextSplit, PitchDeckMediaAndTextSplitSchema, PitchDeckMediaAndTextSplitId, PitchDeckMediaAndTextSplitName, PitchDeckMediaAndTextSplitDesc, "pitch-deck", "MediaAndTextSplit"), + createTemplateEntry(PitchDeckTextAndChartSplit, PitchDeckTextAndChartSplitSchema, PitchDeckTextAndChartSplitId, PitchDeckTextAndChartSplitName, PitchDeckTextAndChartSplitDesc, "pitch-deck", "TextAndChartSplit"), + createTemplateEntry(PitchDeckCardsWithChartSplit, PitchDeckCardsWithChartSplitSchema, PitchDeckCardsWithChartSplitId, PitchDeckCardsWithChartSplitName, PitchDeckCardsWithChartSplitDesc, "pitch-deck", "CardsWithChartSplit"), + createTemplateEntry(PitchDeckAdaptiveValueCardGrid, PitchDeckAdaptiveValueCardGridSchema, PitchDeckAdaptiveValueCardGridId, PitchDeckAdaptiveValueCardGridName, PitchDeckAdaptiveValueCardGridDesc, "pitch-deck", "AdaptiveValueCardGrid"), + createTemplateEntry(PitchDeckAdaptiveMediaCardGrid, PitchDeckAdaptiveMediaCardGridSchema, PitchDeckAdaptiveMediaCardGridId, PitchDeckAdaptiveMediaCardGridName, PitchDeckAdaptiveMediaCardGridDesc, "pitch-deck", "AdaptiveMediaCardGrid"), + createTemplateEntry(PitchDeckHeadlineWithDetailColumns, PitchDeckHeadlineWithDetailColumnsSchema, PitchDeckHeadlineWithDetailColumnsId, PitchDeckHeadlineWithDetailColumnsName, PitchDeckHeadlineWithDetailColumnsDesc, "pitch-deck", "HeadlineWithDetailColumns"), + createTemplateEntry(PitchDeckNumberedMultiColumnOverview, PitchDeckNumberedMultiColumnOverviewSchema, PitchDeckNumberedMultiColumnOverviewId, PitchDeckNumberedMultiColumnOverviewName, PitchDeckNumberedMultiColumnOverviewDesc, "pitch-deck", "NumberedMultiColumnOverview"), + createTemplateEntry(PitchDeckPanelListWithMedia, PitchDeckPanelListWithMediaSchema, PitchDeckPanelListWithMediaId, PitchDeckPanelListWithMediaName, PitchDeckPanelListWithMediaDesc, "pitch-deck", "PanelListWithMedia"), + createTemplateEntry(PitchDeckHorizontalTimeline, PitchDeckHorizontalTimelineSchema, PitchDeckHorizontalTimelineId, PitchDeckHorizontalTimelineName, PitchDeckHorizontalTimelineDesc, "pitch-deck", "HorizontalTimeline"), + createTemplateEntry(PitchDeckOverlappingCircleCards, PitchDeckOverlappingCircleCardsSchema, PitchDeckOverlappingCircleCardsId, PitchDeckOverlappingCircleCardsName, PitchDeckOverlappingCircleCardsDesc, "pitch-deck", "OverlappingCircleCards"), +]; + export const neoGeneralTemplates: TemplateWithData[] = [ createTemplateEntry(TextSplitWithEmphasisBlockLayout, TextSplitWithEmphasisBlockSchema, TextSplitWithEmphasisBlockId, TextSplitWithEmphasisBlockName, TextSplitWithEmphasisBlockDesc, 'neo-general', 'TextSplitWithEmphasisBlock'), @@ -478,6 +508,7 @@ export const allLayouts: TemplateWithData[] = [ ...educationTemplates, ...productOverviewTemplates, ...reportTemplates, + ...pitchDeckTemplates, ]; @@ -540,6 +571,13 @@ export const templates: TemplateLayoutsWithSettings[] = [ settings: reportSettings as TemplateGroupSettings, layouts: reportTemplates, }, + { + id: "pitch-deck", + name: "Pitch Deck", + description: pitchDeckSettings.description, + settings: pitchDeckSettings as TemplateGroupSettings, + layouts: pitchDeckTemplates, + }, { id: "neo-general", name: "Neo General", @@ -606,4 +644,4 @@ export function getLayoutByLayoutId(layout: string): TemplateWithData | undefine return template.layouts.find((t) => t.layoutId === layout); } return undefined; -} \ No newline at end of file +} diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx new file mode 100644 index 00000000..5475800f --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveMediaCardGrid.tsx @@ -0,0 +1,198 @@ +import * as z from "zod"; + +export const slideLayoutId = "adaptive-media-card-grid"; +export const slideLayoutName = "Adaptive Media Card Grid"; +export const slideLayoutDescription = + "A responsive media-card grid that supports compact and dense arrangements."; + +const CardSchema = z.object({ + label: z.string().max(14).meta({ + description: "Small top label shown on each card.", + }), + title: z.string().max(18).meta({ + description: "Primary card title.", + }), + description: z.string().max(40).meta({ + description: "Short supporting description.", + }), + image: z.object({ + __image_url__: z.string().url().meta({ + description: "Image URL for the media card.", + }), + __image_prompt__: z.string().meta({ + description: "A short prompt describing the image content.", + }), + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Top heading text.", + }), + cards: z + .array(CardSchema) + + .max(8) + .default([ + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=12", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=13", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=14", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=12", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=13", + __image_prompt__: "Media card image", + }, + }, + { + label: "LEAD", + title: "Insert Title", + description: "Ut enim ad minima veniam, quis nostrum", + image: { + __image_url__: "https://i.pravatar.cc/800?img=14", + __image_prompt__: "Media card image", + }, + }, + ]) + .meta({ + description: "Media cards rendered in an adaptive grid.", + }), +}); + +export type SchemaType = z.infer; + +const CARD_WIDTH_BY_COUNT: Record = { + 3: 308, + 4: 227, + 8: 227, +}; + +const IMAGE_HEIGHT_BY_COUNT: Record = { + 3: 301, + 4: 222, + 8: 222, +}; + +const AdaptiveMediaCardGrid = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.cards.length; + + const columns = count <= 4 ? count : 4; + const cardWidth = CARD_WIDTH_BY_COUNT[count] ?? 236; + const imageHeight = IMAGE_HEIGHT_BY_COUNT[count] ?? 224; + + return ( + <> + + +
+
4 ? "10px" : "72px", + }} + > +

+ {slideData.title} +

+
+ +
+ {slideData.cards.map((card, index) => ( +
+ {card.image.__image_prompt__} + +
+

+ {card.label} +

+

+ {card.title} +

+

+ {card.description} +

+
+
+ ))} +
+
+ + ); +}; + +export default AdaptiveMediaCardGrid; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx new file mode 100644 index 00000000..0fa1ba0b --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/AdaptiveValueCardGrid.tsx @@ -0,0 +1,262 @@ +import { RemoteSvgIcon } from "@/app/hooks/useRemoteSvgIcon"; +import * as z from "zod"; + +export const slideLayoutId = "adaptive-value-card-grid"; +export const slideLayoutName = "Adaptive Value Card Grid"; +export const slideLayoutDescription = + "A card grid that supports even layouts and odd-count variants with an emphasized trailing card."; + +const ValueCardSchema = z.object({ + value: z.string().max(6).meta({ + description: "Primary card value text.", + }), + label: z.string().max(28).meta({ + description: "Secondary label under the card.", + }), + icon: z.object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Top-left heading.", + }), + items: z + .array(ValueCardSchema) + + .max(8) + .default([ + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + // { + // value: "X 5", label: "Lorem ipsum dolor sit.", icon: { + // __icon_url__: + // "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + // __icon_query__: "check icon", + // } + // }, + ]) + .meta({ + description: "Value cards displayed in an adaptive grid.", + }), +}); + +export type SchemaType = z.infer; + +const RIGHT_RATIO_BY_ODD_COUNT: Record = { + 3: "49%", + 5: "33%", + 7: "29%", +}; + +function Card({ + value, + label, + icon, +}: { + value: string; + label: string; + icon: any; +}) { + return ( +
+
+ + {/* {icon.__icon_query__} */} + + +

+ {value} +

+
+

+ {label} +

+
+ ); +} + +const AdaptiveValueCardGrid = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.items.length; + const isOdd = count % 2 === 1; + + const leftCards = isOdd ? slideData.items.slice(0, -1) : slideData.items; + const rightTallCard = isOdd + ? slideData.items[slideData.items.length - 1] + : null; + + const evenColumns = Math.max(2, Math.min(4, count / 2)); + const oddLeftColumns = Math.max(1, Math.ceil(leftCards.length / 2)); + const rightRatio = RIGHT_RATIO_BY_ODD_COUNT[count] ?? "33%"; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ + {!isOdd && ( +
+ {slideData.items.map((card, index) => ( + + ))} +
+ )} + + {isOdd && rightTallCard && ( +
+
+ {leftCards.map((card, index) => ( + + ))} +
+ + +
+ )} +
+ + ); +}; + +export default AdaptiveValueCardGrid; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx new file mode 100644 index 00000000..9c46ca85 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/CardsWithChartSplit.tsx @@ -0,0 +1,240 @@ +"use client"; + +import * as z from "zod"; + +import PitchDeckChart from "./PitchDeckChart"; +import { ChartPayloadSchema } from "./pitchDeckSchemas"; +import { RemoteSvgIcon } from "@/app/hooks/useRemoteSvgIcon"; + +export const slideLayoutId = "cards-with-chart-split"; +export const slideLayoutName = "Cards with Chart Split"; +export const slideLayoutDescription = + "A split layout with cards on the left and a chart panel on the right."; + +const DEFAULT_CHART = { + chartType: "pie" as const, + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +const ValueCardSchema = z.object({ + value: z.string().max(6).meta({ + description: "Card value text.", + }), + label: z.string().max(28).meta({ + description: "Card supporting label.", + }), + icon: z.object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Main heading.", + }), + items: z + .array(ValueCardSchema) + + .max(4) + .default([ + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + { + value: "X 5", + label: "Lorem ipsum dolor sit.", + icon: { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "check icon", + }, + }, + ]) + .meta({ + description: "Cards shown beside the chart.", + }), + chart: ChartPayloadSchema.default(DEFAULT_CHART).meta({ + description: "Chart configuration for the right panel.", + }), + showAccentGlow: z.boolean().default(true).meta({ + description: + "Whether to render the subtle decorative glow near bottom-left.", + }), +}); + +export type SchemaType = z.infer; + +function Card({ + value, + label, + icon, +}: { + value: string; + label: string; + icon: { __icon_url__: string; __icon_query__: string }; +}) { + return ( +
+
+ + + +

+ {value} +

+
+ +

+ {label} +

+
+ ); +} + +const CardsWithChartSplit = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+

+ {slideData.title} +

+
+
+
+ {slideData.items.map((card, index) => ( + + ))} +
+
+ +
+ +
+
+
+ + ); +}; + +export default CardsWithChartSplit; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx new file mode 100644 index 00000000..5be3f083 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/CenteredCoverWithFooterMeta.tsx @@ -0,0 +1,96 @@ +import * as z from "zod"; + +export const slideLayoutId = "centered-cover-with-footer-meta"; +export const slideLayoutName = "Centered Cover with Footer Metadata"; +export const slideLayoutDescription = + "A single-focus cover layout with centered title, subtitle, and footer metadata groups."; + +const FooterMetaSchema = z.object({ + label: z.string().max(14).meta({ + description: "Footer metadata label.", + }), + value: z.string().max(24).meta({ + description: "Footer metadata value.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(20).default("Presentation").meta({ + description: "Main centered cover title.", + }), + subtitle: z.string().max(34).default("WORKFORCE OPERATIONS").meta({ + description: "Subtitle beneath the title.", + }), + + footerItems: z + .array(FooterMetaSchema) + .max(2) + .default([ + { label: "PRESENTED BY", value: "PRESENTER NAME" }, + { label: "DATE", value: "2026 DECEMBER 4" }, + ]) + .meta({ + description: "Footer metadata groups.", + }), +}); + +export type SchemaType = z.infer; + +const CenteredCoverWithFooterMeta = ({ + data, +}: { + data: Partial; +}) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.title} +

+

+ {slideData.subtitle} +

+
+ +
+ {slideData.footerItems.map((item, index) => ( +
+

+ {item.label} +

+

{item.value}

+
+ ))} +
+
+ + ); +}; + +export default CenteredCoverWithFooterMeta; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx new file mode 100644 index 00000000..0707eefe --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/FullWidthStatement.tsx @@ -0,0 +1,65 @@ +import * as z from "zod"; + +export const slideLayoutId = "full-width-statement"; +export const slideLayoutName = "Full-Width Statement"; +export const slideLayoutDescription = + "A minimalist emphasis layout with a compact label and a large full-width statement block."; + +export const Schema = z.object({ + label: z.string().max(12).default("Label").meta({ + description: "Small label above the statement.", + }), + statement: z + .string() + + .max(90) + .default( + "This is a sample statement used for placeholder content in presentations. This is a sample statement used for placeholder" + ) + .meta({ + description: "Main statement text, with max 90 characters.", + }), +}); + +export type SchemaType = z.infer; + +const FullWidthStatement = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.label} +

+ +

+ {slideData.statement}” +

+
+
+ + ); +}; + +export default FullWidthStatement; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx new file mode 100644 index 00000000..a1dd4bf8 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/HeadlineWithDetailColumns.tsx @@ -0,0 +1,152 @@ +import * as z from "zod"; + +export const slideLayoutId = "headline-with-detail-columns"; +export const slideLayoutName = "Headline with Detail Columns"; +export const slideLayoutDescription = + "A layout with a large headline and detail columns containing markers, text, and bullets."; + +const SectionSchema = z.object({ + number: z.string().max(2).meta({ + description: "Numeric marker value.", + }), + title: z.string().max(16).meta({ + description: "Section title.", + }), + description: z.string().max(150).meta({ + description: "Section paragraph.", + }), + bullets: z.array(z.string().max(40)).max(4).meta({ + description: "Bullet list content.", + }), + highlighted: z.boolean().default(false).meta({ + description: "Whether the top marker is filled.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(24).default("Focus Areas").meta({ + description: "Large left-side heading.", + }), + sections: z + .array(SectionSchema) + + .max(2) + .default([ + { + number: "1", + title: "Column A", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam.", + bullets: [ + "Ut enim ad minima veniam, quis nostrum", + "Exercitationem ullam corporis suscipit", + "Laboriosam, nisi ut alUt enim ad minima", + ], + highlighted: true, + }, + { + number: "2", + title: "Column B", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam.", + bullets: [ + "Ut enim ad minima veniam, quis nostrum", + "Exercitationem ullam corporis suscipit", + "Laboriosam, nisi ut alUt enim ad minima", + ], + highlighted: false, + }, + ]) + .meta({ + description: "Right-side detail columns.", + }), +}); + +export type SchemaType = z.infer; + +const HeadlineWithDetailColumns = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+

+ {slideData.title} +

+ + {slideData.sections.map((section, index) => ( +
+
+ {section.number} +
+ +

+ {section.title} +

+ +

+ {section.description} +

+ +
+ {section.bullets.map((bullet, bulletIndex) => ( +

+

+

{bullet}

+

+ ))} +
+
+ ))} +
+
+ + ); +}; + +export default HeadlineWithDetailColumns; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx new file mode 100644 index 00000000..a02aed98 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/HorizontalTimeline.tsx @@ -0,0 +1,323 @@ +import { RemoteSvgIcon } from "@/app/hooks/useRemoteSvgIcon"; +import * as z from "zod"; + +export const slideLayoutId = "horizontal-timeline"; +export const slideLayoutName = "Horizontal Timeline"; +export const slideLayoutDescription = + "A horizontal timeline with step markers, item text, continuation state, and optional endpoint label."; + +const MAX_TIMELINE_ITEMS_PER_SLIDE = 5; +const DEFAULT_ICON = { + __icon_url__: + "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/placeholder.svg", + __icon_query__: "shield check icon", +}; + +const TimelineItemSchema = z.object({ + label: z.string().max(10).meta({ + description: "Short label above marker icon.", + }), + icon: z + .object({ + __icon_url__: z.string(), + __icon_query__: z.string(), + }) + .default(DEFAULT_ICON), + title: z.string().max(16).meta({ + description: "Heading below marker icon.", + }), + description: z.string().max(132).meta({ + description: "Supporting copy for each timeline item.", + }), +}); + +const DEFAULT_DESCRIPTION = + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam."; + +export const Schema = z.object({ + title: z.string().max(18).default("Timeline").meta({ + description: "Top-left heading.", + }), + isContinue: z.boolean().default(false).meta({ + description: + "Whether this slide continues a previous timeline slide. Continuation slides use the Continue... heading and draw the axis in from the left edge.", + }), + showEndLabel: z.boolean().default(true).meta({ + description: "Whether to show right-end label near timeline axis.", + }), + endLabel: z.string().max(12).default("THE END").meta({ + description: "Right-end label text.", + }), + items: z + .array(TimelineItemSchema) + + .max(MAX_TIMELINE_ITEMS_PER_SLIDE) + .default([ + { + label: "Phase 1", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 2", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 3", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 4", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + label: "Phase 5", + icon: DEFAULT_ICON, + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + ]) + .meta({ + description: "Timeline items from left to right.", + }), +}); + +export type SchemaType = z.infer; + +const SLIDE_WIDTH = 1280; +const TIMELINE_AXIS_Y = 355; +const TIMELINE_LEFT_CENTER = 106; +const TIMELINE_RIGHT_CENTER = 1058; +const THREE_STEP_CENTERS = [106, 580, 1058]; +const CONTINUATION_TITLE = "Continue..."; + +const getTimelineCenters = (count: number) => { + if (count === 3) { + return THREE_STEP_CENTERS; + } + + if (count <= 1) { + return [TIMELINE_LEFT_CENTER]; + } + + return Array.from({ length: count }, (_, index) => { + return ( + TIMELINE_LEFT_CENTER + + ((TIMELINE_RIGHT_CENTER - TIMELINE_LEFT_CENTER) * index) / (count - 1) + ); + }); +}; + +const getTimelineStyle = (count: number) => { + if (count <= 3) { + return { + badgeSize: 88, + labelTop: 268, + titleTop: 423, + contentWidth: 260, + labelFontSize: 25, + titleFontSize: 25, + bodyFontSize: 17, + }; + } + + if (count === 4) { + return { + badgeSize: 76, + labelTop: 274, + titleTop: 417, + contentWidth: 240, + labelFontSize: 23, + titleFontSize: 25, + bodyFontSize: 17, + }; + } + + return { + badgeSize: 66, + labelTop: 280, + titleTop: 412, + contentWidth: 210, + labelFontSize: 20, + titleFontSize: 25, + bodyFontSize: 17, + }; +}; + +function TimelineIconBadge({ + icon, + size, +}: { + icon: { __icon_url__: string; __icon_query__: string }; + size: number; +}) { + return ( + + {/* {icon.__icon_query__} */} + + + ); +} + +const HorizontalTimeline = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const timelineItems = slideData.items; + const timelineCenters = getTimelineCenters(timelineItems.length); + const timelineStyle = getTimelineStyle(timelineItems.length); + const firstCenter = timelineCenters[0] ?? TIMELINE_LEFT_CENTER; + const lastCenter = + timelineCenters[timelineCenters.length - 1] ?? TIMELINE_RIGHT_CENTER; + const axisStart = slideData.isContinue ? 0 : firstCenter; + const axisEnd = slideData.showEndLabel ? lastCenter : SLIDE_WIDTH; + const endLabelLeft = Math.min( + SLIDE_WIDTH - 152, + lastCenter + timelineStyle.badgeSize / 2 + 18 + ); + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ + {timelineItems.map((phase, index) => { + const centerX = timelineCenters[index] ?? TIMELINE_LEFT_CENTER; + const textLeft = Math.max( + 30, + Math.min( + SLIDE_WIDTH - timelineStyle.contentWidth - 30, + centerX - timelineStyle.badgeSize / 2 + ) + ); + + return ( +
+

+ {phase.label} +

+ +
+ +
+ +
+

+ {phase.title} +

+ +

+ {phase.description} +

+
+
+ ); + })} + + {slideData.showEndLabel && ( +

+ {slideData.endLabel} +

+ )} +
+ + ); +}; + +export default HorizontalTimeline; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx new file mode 100644 index 00000000..3554d4ae --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/MediaAndTextSplit.tsx @@ -0,0 +1,147 @@ +import * as z from "zod"; + +export const slideLayoutId = "media-and-text-split"; +export const slideLayoutName = "Media and Text Split"; +export const slideLayoutDescription = + "A split composition with a title and media block on the left and supporting narrative plus footer text on the right."; + +export const Schema = z + .object({ + title: z + .string() + .max(16) + .meta({ + description: "Left panel heading.", + }) + .default("Overview"), + sidePanelMode: z.enum(["solid", "image"]).default("image").meta({ + description: "Left media panel mode.", + }), + sidePanelColor: z.string().max(20).default("#d3d0bc").meta({ + description: "Left media color used in solid mode.", + }), + sidePanelImage: z + .object({ + __image_url__: z + .string() + .default( + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1400&q=80" + ), + __image_prompt__: z.string().default("Glass skyscraper perspective"), + }) + .meta({ + description: "Left media image used in image mode.", + }), + headline: z + .string() + + .max(50) + .default( + "This is a sample text to tell story for audience is written here" + ) + .meta({ + description: "Main headline text on the right.", + }), + body: z + .string() + + .max(128) + .default( + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam." + ) + .meta({ + description: "Supporting paragraph text.", + }), + footerText: z.string().max(28).default("Footer text").meta({ + description: "Footer text at the bottom-right.", + }), + }) + .default({ + title: "Overview", + sidePanelMode: "image", + sidePanelColor: "#d3d0bc", + sidePanelImage: { + __image_url__: + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1400&q=80", + __image_prompt__: "Glass skyscraper perspective", + }, + headline: + "This is a sample text to tell story for audience is written here", + body: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam.", + footerText: "Footer text", + }); + +export type SchemaType = z.infer; + +const MediaAndTextSplit = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+

+ {slideData.title} +

+
+
+ {slideData.sidePanelMode === "image" && ( + {slideData.sidePanelImage.__image_prompt__} + )} +
+
+
+

+ {slideData.headline} +

+

+ {slideData.body} +

+
+

+ {slideData.footerText} +

+
+
+
+ + ); +}; + +export default MediaAndTextSplit; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx new file mode 100644 index 00000000..5d56d3cc --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/NumberedMultiColumnOverview.tsx @@ -0,0 +1,140 @@ +import * as z from "zod"; + +export const slideLayoutId = "numbered-multi-column-overview"; +export const slideLayoutName = "Numbered Multi-Column Overview"; +export const slideLayoutDescription = + "A multi-column layout with numbered markers, short titles, and descriptive body text."; + +const ColumnSchema = z.object({ + marker: z.string().max(2).meta({ + description: "Circular marker value.", + }), + title: z.string().max(14).meta({ + description: "Column title.", + }), + description: z.string().max(118).meta({ + description: "Column description paragraph.", + }), + highlighted: z.boolean().default(false).meta({ + description: "Whether marker circle is filled.", + }), +}); + +export const Schema = z.object({ + title: z.string().max(16).default("Overview").meta({ + description: "Main heading text.", + }), + items: z + .array(ColumnSchema) + + .max(4) + .default([ + { + marker: "1", + title: "Heading 1", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", + highlighted: true, + }, + { + marker: "2", + title: "Heading 2", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", + highlighted: false, + }, + { + marker: "3", + title: "Heading 3", + description: + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", + highlighted: false, + }, + // { marker: "4", title: "Heading 4", description: "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim.", highlighted: false }, + ]) + .meta({ + description: "Columns rendered across the slide.", + }), +}); + +export type SchemaType = z.infer; + +const NumberedMultiColumnOverview = ({ + data, +}: { + data: Partial; +}) => { + const slideData = data as SchemaType; + const columns = slideData.items.length; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ {slideData.items.map((column, index) => ( +
+
+ {column.marker} +
+ +

+ {column.title} +

+ +

+ {column.description} +

+
+ ))} +
+
+ + ); +}; + +export default NumberedMultiColumnOverview; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx new file mode 100644 index 00000000..fbda13c6 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/OverlappingCircleCards.tsx @@ -0,0 +1,221 @@ +import * as z from "zod"; + +export const slideLayoutId = "overlapping-circle-cards"; +export const slideLayoutName = "Overlapping Circle Cards"; +export const slideLayoutDescription = + "A horizontal row of overlapping circular cards with markers, titles, and text."; + +const CardSchema = z.object({ + number: z.string().max(2).meta({ + description: "Short card marker.", + }), + title: z.string().max(16).meta({ + description: "Card title.", + }), + description: z.string().max(132).meta({ + description: "Card description text.", + }), +}); + +const DEFAULT_DESCRIPTION = + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam."; + +export const Schema = z.object({ + title: z.string().max(12).default("Cards").meta({ + description: "Main heading text.", + }), + items: z + .array(CardSchema) + + .max(5) + .default([ + { + number: "01", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "02", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "03", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "04", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + { + number: "05", + title: "Insert text here", + description: DEFAULT_DESCRIPTION, + }, + ]) + .meta({ + description: "Circle cards from left to right.", + }), +}); + +export type SchemaType = z.infer; + +const CIRCLE_CARD_LAYOUT_BY_COUNT: Record< + number, + { + circleSize: number; + connectorSize: number; + overlap: number; + rowLeft: number; + rowTop: number; + numberFontSize: number; + titleFontSize: number; + bodyFontSize: number; + bodyWidth: number; + } +> = { + 3: { + circleSize: 384, + connectorSize: 84, + overlap: -21, + rowLeft: 34, + rowTop: 238, + numberFontSize: 32, + titleFontSize: 30, + bodyFontSize: 20, + bodyWidth: 250, + }, + 4: { + circleSize: 318, + connectorSize: 70, + overlap: -21, + rowLeft: 44, + rowTop: 238, + numberFontSize: 30, + titleFontSize: 28, + bodyFontSize: 18, + bodyWidth: 214, + }, + 5: { + circleSize: 272, + connectorSize: 56, + overlap: -37, + rowLeft: 34, + rowTop: 238, + numberFontSize: 24, + titleFontSize: 22, + bodyFontSize: 16, + bodyWidth: 172, + }, +}; + +const getConnectorLeft = (overlap: number, connectorSize: number) => + (Math.abs(overlap) - connectorSize) / 2; + +const OverlappingCircleCards = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const count = slideData.items.length; + const layout = + CIRCLE_CARD_LAYOUT_BY_COUNT[count] ?? CIRCLE_CARD_LAYOUT_BY_COUNT[5]; + + return ( + <> + + +
+
+

+ {slideData.title} +

+
+ +
+ {slideData.items.map((item, index) => ( +
+ {index > 0 && ( + + )} + +
+

+ {item.number} +

+

+ {item.title} +

+

+ {item.description} +

+
+
+ ))} +
+
+ + ); +}; + +export default OverlappingCircleCards; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx new file mode 100644 index 00000000..102b3cb3 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/PanelListWithMedia.tsx @@ -0,0 +1,269 @@ +import * as z from "zod"; + +export const slideLayoutId = "panel-list-with-media"; +export const slideLayoutName = "Panel List with Media"; +export const slideLayoutDescription = + "A table layout with a left multi-column item list and a configurable right media or color panel."; + +const ItemSchema = z.object({ + title: z.string().max(18).meta({ + description: "Item title in the list.", + }), + number: z.string().max(2).meta({ + description: "Section number shown on the right.", + }), + description: z.string().max(40).optional().meta({ + description: "Optional item description used in description variants.", + }), +}); + +export const Schema = z + .object({ + title: z.string().max(14).default("List").meta({ + description: "Main heading text.", + }), + rowVariant: z + .enum(["titleOnly", "titleWithDescription"]) + .default("titleWithDescription") + .meta({ + description: "Layout variant for item rows.", + }), + sidePanelMode: z.enum(["solid", "image"]).default("solid").meta({ + description: "Right-side panel style.", + }), + + sidePanelImage: z + .object({ + __image_url__: z + .string() + .url() + .default( + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1600&q=80" + ), + __image_prompt__: z.string().default("Skyscraper perspective photo"), + }) + .meta({ + description: "Right-side panel image used in image mode.", + }), + items: z + .array(ItemSchema) + + .max(10) + .default([ + { + title: "Section Title", + number: "1", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Clarity", + number: "2", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Design Principles", + number: "3", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Visual Structure", + number: "4", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Typography", + number: "5", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Color & Space", + number: "6", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Audience Focus", + number: "7", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Layout System", + number: "8", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Presentation Flow", + number: "9", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Key Takeaways", + number: "10", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + ]) + .meta({ + description: "Items shown in the left panel.", + }), + }) + .default({ + title: "List", + rowVariant: "titleWithDescription", + sidePanelMode: "image", + sidePanelImage: { + __image_url__: + "https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?auto=format&fit=crop&w=1600&q=80", + __image_prompt__: "Skyscraper perspective photo", + }, + items: [ + { + title: "Section Title", + number: "1", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Clarity", + number: "2", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Design Principles", + number: "3", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Visual Structure", + number: "4 ", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Typography", + number: "5", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Color & Space", + number: "6", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Audience Focus", + number: "7", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Layout System", + number: "8", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Presentation Flow", + number: "9", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + { + title: "Key Takeaways", + number: "10", + description: "Ut enim ad minima. Ut enim ad minima veniam.", + }, + ], + }); + +export type SchemaType = z.infer; + +const PanelListWithMedia = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + const showDescriptions = slideData.rowVariant === "titleWithDescription"; + + const midpoint = Math.ceil(slideData.items && slideData.items.length / 2); + const leftItems = slideData.items && slideData.items.slice(0, midpoint); + const rightItems = slideData.items && slideData.items.slice(midpoint); + + return ( + <> + + +
+
+
+

+ {slideData.title} +

+ +
+ {[leftItems, rightItems].map((column, columnIndex) => ( +
+ {column && + column.map((item) => ( +
+
+

+ {item.title} +

+

+ {item.number} +

+
+ + {showDescriptions && ( +

+ {item.description ?? "Ut enim ad minima veniam."} +

+ )} +
+ ))} +
+ ))} +
+
+ +
+ {slideData.sidePanelMode === "image" && ( + {slideData.sidePanelImage.__image_prompt__} + )} +
+
+
+ + ); +}; + +export default PanelListWithMedia; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx new file mode 100644 index 00000000..696bdbed --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/PitchDeckChart.tsx @@ -0,0 +1,477 @@ +"use client"; + +import { + Bar, + BarChart, + CartesianGrid, + Cell, + LabelList, + Line, + LineChart, + Pie, + PieChart, + ResponsiveContainer, + Scatter, + ScatterChart, + XAxis, + YAxis, +} from "recharts"; + +export type PitchChartType = "bar" | "pie" | "scatter" | "stackedBar" | "line"; + +export type PitchBarDatum = { + label: string; + value: number; + value2?: number; +}; + +export type PitchPieDatum = { + label: string; + value: number; + color: string; +}; + +export type PitchScatterDatum = { + label: string; + value: number; +}; + +export type PitchChartPayload = { + chartType: PitchChartType; + legendLabel: string; + yAxisLabel: string; + barData: PitchBarDatum[]; + pieData: PitchPieDatum[]; + scatterData: PitchScatterDatum[]; + lineData: PitchBarDatum[]; + stackedBarData: PitchBarDatum[]; +}; + +type Props = { + payload?: Partial | null; +}; + +type PieLabelProps = { + cx?: number; + cy?: number; + midAngle?: number; + outerRadius?: number; + value?: string | number; +}; + +const DEFAULT_CHART_COLORS = [ + "#8B5CF6", + "#06B6D4", + "#10B981", + "#F59E0B", + "#EF4444", + "#EC4899", +]; +const AXIS = "var(--background-text,#d8d4bf)"; +const GRID = "var(--background-text,#585a61)"; +const CHART_RIGHT_MARGIN = 36; + +const graphColors = (index: number, fallbackColor?: string) => { + const fallback = + fallbackColor || DEFAULT_CHART_COLORS[index % DEFAULT_CHART_COLORS.length]; + return `var(--graph-${index}, ${fallback})`; +}; +const DEFAULT_CHART_PAYLOAD: PitchChartPayload = { + chartType: "bar", + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "Mon", value: 7 }, + { label: "Tue", value: 2 }, + { label: "Wed", value: 92 }, + { label: "Thu", value: 15 }, + { label: "Fri", value: 91 }, + { label: "Sat", value: 73 }, + { label: "Sun", value: 56 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +function resolveChartPayload( + payload?: Partial | null +): PitchChartPayload { + return { + ...DEFAULT_CHART_PAYLOAD, + ...payload, + barData: payload?.barData?.length + ? payload.barData + : DEFAULT_CHART_PAYLOAD.barData, + pieData: payload?.pieData?.length + ? payload.pieData + : DEFAULT_CHART_PAYLOAD.pieData, + scatterData: payload?.scatterData?.length + ? payload.scatterData + : DEFAULT_CHART_PAYLOAD.scatterData, + lineData: payload?.lineData?.length + ? payload.lineData + : DEFAULT_CHART_PAYLOAD.lineData, + stackedBarData: payload?.stackedBarData?.length + ? payload.stackedBarData + : DEFAULT_CHART_PAYLOAD.stackedBarData, + chartType: payload?.chartType || DEFAULT_CHART_PAYLOAD.chartType, + legendLabel: payload?.legendLabel || DEFAULT_CHART_PAYLOAD.legendLabel, + yAxisLabel: payload?.yAxisLabel || DEFAULT_CHART_PAYLOAD.yAxisLabel, + }; +} + +function PiePercentLabel({ + cx = 0, + cy = 0, + midAngle = 0, + outerRadius = 0, + value = "", +}: PieLabelProps) { + const radius = outerRadius * 0.72; + const x = cx + radius * Math.cos((-midAngle * Math.PI) / 180); + const y = cy + radius * Math.sin((-midAngle * Math.PI) / 180); + const text = `${value}%`; + + return ( + + + + {text} + + + ); +} + +function Legend({ + label, + color = graphColors(0), +}: { + label: string; + color?: string; +}) { + return ( +
+ + {label} +
+ ); +} + +export default function PitchDeckChart({ payload }: Props) { + const { + chartType, + barData, + pieData, + scatterData, + lineData, + stackedBarData, + legendLabel, + yAxisLabel, + } = resolveChartPayload(payload); + + if (chartType === "pie") { + return ( +
+
+ + + ( + + )} + isAnimationActive={false} + > + {pieData.map((entry, index) => ( + + ))} + + + +
+ +
+ {pieData.map((entry, index) => ( + + + {entry.label} + + ))} +
+
+ ); + } + + if (chartType === "scatter") { + const points = scatterData.map((item, index) => ({ + x: index + 1, + y: item.value, + label: item.label, + })); + + return ( +
+
+ + + + + points[Number(value) - 1]?.label ?? "label" + } + tick={{ fill: AXIS, fontSize: 18 }} + axisLine={{ stroke: AXIS }} + tickLine={false} + /> + + + + +
+ +
+ ); + } + + if (chartType === "line") { + return ( +
+
+ + + + + + + + +
+ +
+ ); + } + + if (chartType === "stackedBar") { + return ( +
+
+ + + + + + + + + + + + +
+ +
+ ); + } + + return ( +
+
+ + + + + + + + + +
+ +
+ ); +} diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx b/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx new file mode 100644 index 00000000..272399d9 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/TextAndChartSplit.tsx @@ -0,0 +1,145 @@ +"use client"; + +import * as z from "zod"; + +import PitchDeckChart from "./PitchDeckChart"; +import { ChartPayloadSchema } from "./pitchDeckSchemas"; + +export const slideLayoutId = "text-and-chart-split-layout"; +export const slideLayoutName = "Text and Chart Split Layout"; +export const slideLayoutDescription = + "A split layout with narrative text on the left and a configurable chart canvas on the right."; + +const DEFAULT_CHART = { + chartType: "scatter" as const, + legendLabel: "Series Label", + yAxisLabel: "Y axis name", + barData: [ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ], + pieData: [ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ], + scatterData: [ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ], + lineData: [ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ], + stackedBarData: [ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ], +}; + +export const Schema = z.object({ + title: z.string().max(16).default("Highlights").meta({ + description: "Main heading on the left.", + }), + leadText: z + .string() + .max(52) + .default("This is a sample text to tell story for audience is written here") + .meta({ + description: "Primary narrative line above supporting text.", + }), + supportingText: z + .string() + + .max(126) + .default( + "Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut alUt enim ad minima veniam." + ) + .meta({ + description: "Supporting paragraph text.", + }), + chart: ChartPayloadSchema.default(DEFAULT_CHART).meta({ + description: "Chart configuration payload rendered on the right side.", + }), + showAccentGlow: z.boolean().default(true).meta({ + description: + "Whether to render the subtle decorative glow near bottom-left.", + }), +}); + +export type SchemaType = z.infer; + +const TextAndChartSplit = ({ data }: { data: Partial }) => { + const slideData = data as SchemaType; + + return ( + <> + + +
+
+
+

+ {slideData.title} +

+ +

+ {slideData.leadText} +

+ +

+ {slideData.supportingText} +

+
+ +
+ +
+
+
+ + ); +}; + +export default TextAndChartSplit; diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts b/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts new file mode 100644 index 00000000..7966ff86 --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/pitchDeckSchemas.ts @@ -0,0 +1,132 @@ +import * as z from "zod"; + +export const DARK_BG = "var(--background-color,#27292d)"; +export const ACCENT_TEXT = "var(--primary-color,#dddac7)"; +export const BODY_TEXT = "var(--primary-text,#d7d3be)"; +export const MUTED_TEXT = "var(--background-text,#cbc7b2)"; +export const BORDER = "var(--border-color,#8d8a7d)"; +export const SUBTLE_LINE = "var(--line-color,#4c4e53)"; + +export const ChartTypeSchema = z.enum(["bar", "pie", "scatter", "stackedBar", "line"]); + +export const BarDatumSchema = z.object({ + label: z.string().max(10).meta({ + description: "X-axis label for bar/line/stacked charts.", + }), + value: z.number().max(300).meta({ + description: "Primary numeric value.", + }), + value2: z.number().max(300).optional().meta({ + description: "Secondary stacked value when using stacked bar charts.", + }), +}); + +export const PieDatumSchema = z.object({ + label: z.string().max(16).meta({ + description: "Legend label for pie slices.", + }), + value: z.number().max(100).meta({ + description: "Slice percentage value.", + }), + color: z.string().max(20).meta({ + description: "Slice fill color.", + }), +}); + +export const ScatterDatumSchema = z.object({ + label: z.string().max(10).meta({ + description: "X-axis label for scatter points.", + }), + value: z.number().max(100).meta({ + description: "Y-axis value for the point.", + }), +}); + +export const ChartPayloadSchema = z.object({ + chartType: ChartTypeSchema.default("bar").meta({ + description: "Chart type rendered on the right side.", + }), + legendLabel: z.string().max(30).default("Series Label").meta({ + description: "Single-series legend label for non-pie charts.", + }), + yAxisLabel: z.string().max(16).default("Y axis name").meta({ + description: "Y-axis title used in scatter charts.", + }), + barData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 120 }, + { label: "Tue", value: 200 }, + { label: "Wed", value: 150 }, + { label: "Thu", value: 80 }, + { label: "Fri", value: 70 }, + { label: "Sat", value: 110 }, + { label: "Sun", value: 130 }, + ]) + .meta({ + description: "Dataset for regular bar charts.", + }), + pieData: z + .array(PieDatumSchema) + + .max(3) + .default([ + { label: "Category A", value: 55, color: "#d8d4bf" }, + { label: "Category B", value: 25, color: "#b8b4a3" }, + { label: "Category C", value: 20, color: "#a2a091" }, + ]) + .meta({ + description: "Pie chart dataset.", + }), + scatterData: z + .array(ScatterDatumSchema) + + .max(10) + .default([ + { label: "label", value: 7 }, + { label: "label", value: 2 }, + { label: "label", value: 92 }, + { label: "label", value: 15 }, + { label: "label", value: 91 }, + { label: "label", value: 73 }, + { label: "label", value: 56 }, + { label: "label", value: 90 }, + ]) + .meta({ + description: "Scatter points for distribution charts.", + }), + lineData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 30 }, + { label: "Tue", value: 48 }, + { label: "Wed", value: 64 }, + { label: "Thu", value: 42 }, + { label: "Fri", value: 58 }, + { label: "Sat", value: 70 }, + { label: "Sun", value: 90 }, + ]) + .meta({ + description: "Dataset for line charts.", + }), + stackedBarData: z + .array(BarDatumSchema) + + .max(8) + .default([ + { label: "Mon", value: 50, value2: 50 }, + { label: "Tue", value: 80, value2: 70 }, + { label: "Wed", value: 90, value2: 90 }, + { label: "Thu", value: 40, value2: 60 }, + { label: "Fri", value: 80, value2: 70 }, + { label: "Sat", value: 90, value2: 90 }, + { label: "Sun", value: 70, value2: 80 }, + ]) + .meta({ + description: "Dataset for stacked bar charts using value and value2.", + }), +}); diff --git a/servers/nextjs/app/presentation-templates/pitch-deck/settings.json b/servers/nextjs/app/presentation-templates/pitch-deck/settings.json new file mode 100644 index 00000000..f884723d --- /dev/null +++ b/servers/nextjs/app/presentation-templates/pitch-deck/settings.json @@ -0,0 +1,5 @@ +{ + "description": "Dark, theme-ready presentation layouts with covers, structured content grids, timelines, narrative splits, and chart-driven slides", + "ordered": false, + "default": false +}