
= ({ data: slideData }) =>
{/* Member Info */}
-
+
{member.name}
-
+
{member.position}
-
+
{member.description}
diff --git a/servers/nextjs/presentation-templates/general/settings.json b/servers/nextjs/app/presentation-templates/general/settings.json
similarity index 100%
rename from servers/nextjs/presentation-templates/general/settings.json
rename to servers/nextjs/app/presentation-templates/general/settings.json
diff --git a/servers/nextjs/app/presentation-templates/index.tsx b/servers/nextjs/app/presentation-templates/index.tsx
new file mode 100644
index 00000000..0ef67b9b
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/index.tsx
@@ -0,0 +1,453 @@
+import { TemplateWithData, TemplateGroupSettings, createTemplateEntry, TemplateLayoutsWithSettings } from "./utils";
+
+
+// TODO: Step 1: Import All templates Layouts Here (like the ones below)
+
+// 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";
+
+// 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 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";
+
+
+
+
+// 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";
+
+// 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';
+
+
+
+
+
+// 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";
+
+// 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';
+
+
+
+
+
+
+// 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";
+
+// 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';
+
+
+
+
+
+
+// TODO: Step 2: Import template settings Here (like the ones below)
+// Template template settings
+import generalSettings from "./general/settings.json";
+import modernSettings from "./modern/settings.json";
+import standardSettings from "./standard/settings.json";
+import swiftSettings from "./swift/settings.json";
+import neoGeneralSettings from "./neo-general/settings.json";
+import neoStandardSettings from "./neo-standard/settings.json";
+import neoModernSettings from "./neo-modern/settings.json";
+import neoSwiftSettings from "./neo-swift/settings.json";
+
+// Helper to create template entry
+
+
+// TODO: Step 3: Create template entries for each template (like the ones below)
+
+export const neoGeneralTemplates: TemplateWithData[] = [
+
+ 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(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(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(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"),
+]
+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"),
+]
+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"),
+]
+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"),
+]
+
+// 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"),
+];
+
+
+// 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"),
+];
+
+// 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"),
+];
+
+// 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"),
+];
+
+// 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,
+
+];
+
+
+// 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: "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,
+ },
+
+];
+
+// 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 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,
+ }
+ }) || {};
+}
+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 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
diff --git a/servers/nextjs/presentation-templates/modern/3ProblemSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/BulletWithIconsSlideLayout.tsx
similarity index 53%
rename from servers/nextjs/presentation-templates/modern/3ProblemSlideLayout.tsx
rename to servers/nextjs/app/presentation-templates/modern/BulletWithIconsSlideLayout.tsx
index 55afa34d..0cb07c33 100644
--- a/servers/nextjs/presentation-templates/modern/3ProblemSlideLayout.tsx
+++ b/servers/nextjs/app/presentation-templates/modern/BulletWithIconsSlideLayout.tsx
@@ -1,13 +1,12 @@
import React from "react";
import * as z from "zod";
-import { ImageSchema, IconSchema } from "@/presentation-templates/defaultSchemes";
+import { ImageSchema, IconSchema } from "../defaultSchemes";
+import { RemoteSvgIcon } from "@/app/hooks/useRemoteSvgIcon";
-export const layoutId = "problem-statement-slide";
-export const layoutName = "Problem Statement Slide";
-export const layoutDescription =
- "A slide layout designed to present a clear problem statement, including categories of problems, company information, and an optional image.";
-
-const problemStatementSlideSchema = z.object({
+export const layoutId = "bullet-with-icons";
+export const layoutName = "Bullet With Icons Slide Layout";
+export const layoutDescription = "Bullets with icons slide layout";
+const bulletWithIconsSlideSchema = z.object({
title: z.string().min(3).max(20).default("Problem").meta({
description: "Main title of the problem statement slide",
}),
@@ -44,7 +43,7 @@ const problemStatementSlideSchema = z.object({
"Businesses struggle to find digital tools that meet their needs, causing operational slowdowns.",
icon: {
__icon_url__:
- "/static/icons/placeholder.svg",
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/checks-bold.svg",
__icon_query__: "warning alert inefficiency",
},
},
@@ -54,7 +53,7 @@ const problemStatementSlideSchema = z.object({
"Outdated systems increase expenses, while small businesses struggle to expand their market reach.",
icon: {
__icon_url__:
- "/static/icons/placeholder.svg",
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/fediverse-logo-bold.svg",
__icon_query__: "trending up costs chart",
},
},
@@ -64,7 +63,7 @@ const problemStatementSlideSchema = z.object({
"Businesses struggle to find digital tools that meet their needs, causing operational slowdowns.",
icon: {
__icon_url__:
- "/static/icons/placeholder.svg",
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/video-bold.svg",
__icon_query__: "warning alert inefficiency",
},
},
@@ -74,7 +73,7 @@ const problemStatementSlideSchema = z.object({
"Businesses struggle to find digital tools that meet their needs, causing operational slowdowns.",
icon: {
__icon_url__:
- "/static/icons/placeholder.svg",
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/users-four-bold.svg",
__icon_query__: "warning alert inefficiency",
},
},
@@ -83,27 +82,23 @@ const problemStatementSlideSchema = z.object({
description:
"List of problem categories with titles, descriptions, and optional icons",
}),
- companyName: z.string().min(2).max(50).default("presenton").meta({
- description: "Company name displayed in header",
- }),
- date: z.string().min(5).max(30).default("June 13, 2038").meta({
- description: "Today Date displayed in header",
- }),
+
+
});
-export const Schema = problemStatementSlideSchema;
+export const Schema = bulletWithIconsSlideSchema;
-export type ProblemStatementSlideData = z.infer<
- typeof problemStatementSlideSchema
+export type BulletWithIconsSlideData = z.infer<
+ typeof bulletWithIconsSlideSchema
>;
-interface ProblemStatementSlideLayoutProps {
- data?: Partial
;
+interface BulletWithIconsSlideLayoutProps {
+ data?: Partial;
}
-const ProblemStatementSlideLayout: React.FC<
- ProblemStatementSlideLayoutProps
-> = ({ data: slideData }) => {
+const BulletWithIconsSlideLayout = ({
+ data: slideData,
+}: BulletWithIconsSlideLayoutProps) => {
const problemCategories = slideData?.problemCategories || [];
return (
@@ -115,27 +110,37 @@ const ProblemStatementSlideLayout: React.FC<
/>
{/* Header */}
-
- {slideData?.companyName}
- {slideData?.date}
-
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
{/* Main content area */}
{/* Left side - Main Problem */}
-
+
{slideData?.title}
-
+
{slideData?.description}
@@ -147,23 +152,27 @@ const ProblemStatementSlideLayout: React.FC<
{problemCategories.map((category, index) => (
-
- {category.icon?.__icon_url__ && (
-

+ {category.icon?.__icon_url__ ? (
+
+ ) : (
+
)}
-
+
{category.title}
-
+
{category.description}
@@ -174,10 +183,10 @@ const ProblemStatementSlideLayout: React.FC<
{/* Bottom border line */}
-
+
>
);
};
-export default ProblemStatementSlideLayout;
+export default BulletWithIconsSlideLayout;
diff --git a/servers/nextjs/app/presentation-templates/modern/BulletsWithIconsDescriptionGrid.tsx b/servers/nextjs/app/presentation-templates/modern/BulletsWithIconsDescriptionGrid.tsx
new file mode 100644
index 00000000..86fbed86
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/modern/BulletsWithIconsDescriptionGrid.tsx
@@ -0,0 +1,196 @@
+import React from "react";
+import { RemoteSvgIcon } from "@/app/hooks/useRemoteSvgIcon";
+import * as z from "zod";
+import { IconSchema } from "../defaultSchemes";
+
+export const layoutId = "bullet-with-icons-description-grid";
+export const layoutName = "Bullet With Icons Description Grid";
+export const layoutDescription =
+ "A bullet with icons description grid slide layout";
+
+const bulletWithIconsDescriptionGridSlideSchema = z.object({
+
+ title: z.string().min(3).max(25).default("Businesses struggle").meta({
+ description: "Main title of the slide",
+ }),
+ mainDescription: z
+ .string()
+ .min(20)
+ .max(300)
+ .default(
+ "Show that we offer a solution that solves the problems previously described and identified. Make sure that the solutions we offer uphold the values of effectiveness, efficiency, and are highly relevant to the market situation and society is here and what is hsd sdksdf klfdslkf lkflkfsldkf.",
+ )
+ .meta({
+ description: "Main content text describing the solution",
+ }),
+ sections: z
+ .array(
+ z.object({
+ title: z.string().min(3).max(30).meta({
+ description: "Section title",
+ }),
+ description: z.string().min(5).max(70).meta({
+ description: "Section description",
+ }),
+ icon: IconSchema.optional().meta({
+ description: "Icon for the section",
+ }),
+ }),
+ )
+ .min(2)
+ .max(6)
+ .default([
+ {
+ title: "Market",
+ description:
+ "Innovative and widely accepted. Innovative and widely accepted. Innovative and widely accepted.",
+ icon: {
+ __icon_query__: "market innovation",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/checks-bold.svg",
+ },
+ },
+ {
+ title: "Industry",
+ description: "Based on sound market decisions.",
+ icon: {
+ __icon_query__: "industry building",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/fediverse-logo-bold.svg",
+ },
+ },
+ {
+ title: "SEM",
+ description: "Driven by precise data and analysis.",
+ icon: {
+ __icon_query__: "SEM data analysis",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/video-bold.svg",
+ },
+ },
+ {
+ title: "End User",
+ description: "Focused on real user impact.",
+ icon: {
+ __icon_query__: "end user impact",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/users-four-bold.svg",
+ },
+ },
+ {
+ title: "Industry",
+ description: "Based on sound market decisions.",
+ icon: {
+ __icon_query__: "industry building",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/fediverse-logo-bold.svg",
+ },
+ },
+ {
+ title: "SEM",
+ description: "Driven by precise data and analysis.",
+ icon: {
+ __icon_query__: "SEM data analysis",
+ __icon_url__:
+ "https://presenton-public.s3.ap-southeast-1.amazonaws.com/static/icons/bold/video-bold.svg",
+ },
+ },
+
+ ])
+ .meta({
+ description:
+ "List of solution sections with titles, descriptions, and optional icons",
+ }),
+});
+
+export const Schema = bulletWithIconsDescriptionGridSlideSchema;
+
+export type BulletWithIconsDescriptionGridSlideData = z.infer
;
+
+interface BulletWithIconsDescriptionGridSlideLayoutProps {
+ data?: Partial;
+}
+
+const BulletWithIconsDescriptionGridSlideLayout = ({
+ data: slideData,
+}: BulletWithIconsDescriptionGridSlideLayoutProps) => {
+ const sections = slideData?.sections || [];
+ return (
+ <>
+ {/* Import Google Fonts */}
+
+
+
+ {/* Header */}
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
+
+ {/* Main Content */}
+
+ {/* Title and Description */}
+
+
+ {slideData?.title}
+
+
+ {slideData?.mainDescription}
+
+
+
+ {sections.map((section, idx) => (
+
+
+ {section?.icon?.__icon_url__ && (
+
+ )}
+
+
+ {section.title}
+
+
+
+ {section.description}
+
+
+ ))}
+
+
+
+ {/* Bottom Border */}
+
+
+ >
+ );
+};
+
+export default BulletWithIconsDescriptionGridSlideLayout;
diff --git a/servers/nextjs/app/presentation-templates/modern/ChartOrTableWithDescription.tsx b/servers/nextjs/app/presentation-templates/modern/ChartOrTableWithDescription.tsx
new file mode 100644
index 00000000..fce7cbff
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/modern/ChartOrTableWithDescription.tsx
@@ -0,0 +1,286 @@
+import React from "react";
+import * as z from "zod";
+import {
+ BarChart,
+ Bar,
+ CartesianGrid,
+ XAxis,
+ YAxis,
+ Tooltip,
+ ResponsiveContainer,
+ Legend,
+ LineChart,
+ Line,
+ PieChart,
+ Pie,
+ Cell,
+} from "recharts";
+
+export const layoutId = "chart-or-table-with-description";
+export const layoutName = "Chart or Table With Description";
+export const layoutDescription =
+ "Chart with description slide layout";
+
+const businessModelSchema = z
+ .object({
+
+ title: z.string().min(3).max(60).default("Data Table or Chart"),
+ description: z
+ .string()
+ .default(
+ "Present structured information in a flexible table or visualize it with a chart.",
+ )
+ .meta({
+ description: "Supporting description for the table/chart",
+ }),
+
+ mode: z.enum(["table", "chart"]).default("chart"),
+
+ // Table configuration (generic)
+ columns: z
+ .array(z.string().min(1).max(40))
+ .min(2)
+ .max(10)
+ .default(["Column 1", "Column 2", "Column 3"]),
+ rows: z
+ .array(
+ z.object({
+ cells: z
+ .array(z.string().min(0).max(200))
+ .min(2)
+ .max(10)
+ .default(["Row 1", "Value", "Value"]),
+ }),
+ )
+ .min(1)
+ .max(30)
+ .default([
+ { cells: ["Row A", "β", "-"] },
+ { cells: ["Row B", "Text", "123"] },
+ { cells: ["Row C", "More text", "456"] },
+ ]),
+
+ // Chart configuration (parity with Swift TableorChart)
+ chart: z
+ .object({
+ type: z.enum(["bar", "horizontalBar", "line", "pie"]).default("line"),
+ data: z
+ .array(z.object({ label: z.string().min(1).max(12), value: z.number() }))
+ .min(3)
+ .max(12)
+ .default([
+ { label: "A", value: 60 },
+ { label: "B", value: 42 },
+ { label: "C", value: 75 },
+ { label: "D", value: 30 },
+ ]),
+
+ showLabels: z.boolean().default(true),
+ })
+ .default({
+ type: "line",
+ data: [
+ { label: "A", value: 60 },
+ { label: "B", value: 42 },
+ { label: "C", value: 75 },
+ { label: "D", value: 30 },
+ ],
+
+ showLabels: true,
+ }),
+ })
+ .default({
+
+ title: "Data Table or Chart",
+ description:
+ "Present structured information in a flexible table or visualize it with a chart.",
+ mode: "table",
+ columns: ["Column 1", "Column 2", "Column 3"],
+ rows: [
+ { cells: ["Row A", "β", "-"] },
+ { cells: ["Row B", "Text", "123"] },
+ { cells: ["Row C", "More text", "456"] },
+ ],
+ chart: {
+ type: "line",
+ data: [
+ { label: "A", value: 60 },
+ { label: "B", value: 42 },
+ { label: "C", value: 75 },
+ { label: "D", value: 30 },
+ ],
+
+ showLabels: true,
+ },
+ });
+
+
+const CHART_COLORS = [
+ '#3b82f6', '#ef4444', '#10b981', '#f59e0b', '#8b5cf6',
+ '#06b6d4', '#84cc16', '#f97316', '#ec4899', '#6366f1'
+];
+
+export const Schema = businessModelSchema;
+export type BusinessModelData = z.infer;
+
+interface Props {
+ data?: Partial;
+}
+
+
+
+const BusinessModelSlide: React.FC = ({ data }) => {
+ const mode = data?.mode || "table";
+ const columns = data?.columns || [];
+ const rows = data?.rows || [];
+
+ const cData = data?.chart?.data || [];
+ const type = data?.chart?.type || "bar";
+
+ const showLabels = data?.chart?.showLabels !== false;
+ const axisProps = {
+ tick: { fill: 'var(--background-text, #7f8491)', fontSize: 12, fontWeight: 600 },
+ axisLine: { stroke: 'var(--background-text, #7f8491)' },
+ tickLine: { stroke: 'var(--background-text, #7f8491)' },
+ };
+
+ return (
+ <>
+
+
+ {/* Header */}
+ {((data as any)?.__companyName__ || (data as any)?._logo_url__) && (
+
+
+
+
+ {(data as any)?._logo_url__ &&

}
+ {(data as any)?.__companyName__ &&
+ {(data as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
+
+ {/* Main Content */}
+
+ {/* Left Column - Title and description */}
+
+
+ {data?.title}
+
+
+ {data?.description}
+
+
+
+ {/* Right Column - Table or Chart (based on mode) */}
+
+ {mode === "table" ? (
+
+
+
+
+
+ {columns.map((col, idx) => (
+ |
+ {col}
+ |
+ ))}
+
+
+
+ {rows.map((row, rIdx) => (
+
+ {columns.map((_, cIdx) => (
+ |
+ {row.cells[cIdx] || ''}
+ |
+ ))}
+
+ ))}
+
+
+
+
+ ) : (
+
+
+
+
+ {type === "bar" ? (
+
+
+
+
+
+
+
+ {cData.map((_, i) => (
+ |
+ ))}
+
+
+ ) : type === "horizontalBar" ? (
+
+
+
+
+
+
+
+ {cData.map((_, i) => (
+ |
+ ))}
+
+
+ ) : type === "line" ? (
+
+
+
+
+
+
+
+ {cData.map((_, i) => (
+ |
+ ))}
+
+
+ ) : (
+
+
+
+
+ {cData.map((_, i) => (
+ |
+ ))}
+
+
+ )}
+
+
+
+
+ )}
+
+
+
+
+ >
+ );
+};
+
+export default BusinessModelSlide;
diff --git a/servers/nextjs/presentation-templates/modern/8CompanyTractionSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/ChartOrTableWithMetricsDescription.tsx
similarity index 58%
rename from servers/nextjs/presentation-templates/modern/8CompanyTractionSlideLayout.tsx
rename to servers/nextjs/app/presentation-templates/modern/ChartOrTableWithMetricsDescription.tsx
index 1a730392..d07bac98 100644
--- a/servers/nextjs/presentation-templates/modern/8CompanyTractionSlideLayout.tsx
+++ b/servers/nextjs/app/presentation-templates/modern/ChartOrTableWithMetricsDescription.tsx
@@ -11,10 +11,10 @@ import {
} from "recharts";
import * as z from "zod";
-export const layoutId = "company-traction-slide";
-export const layoutName = "Company Traction Slide";
+export const layoutId = "chart-with-metrics";
+export const layoutName = "Chart With Metrics Slide";
export const layoutDescription =
- "A slide layout designed to present company traction data, including growth statistics over the years, a chart visualization, and key metrics in a visually appealing format.";
+ "A chart or table with metrics slide layout";
const growthStatsSchema = z
.object({
@@ -28,12 +28,8 @@ const growthStatsSchema = z
// growthStats: list of dicts, each dict is { year: string, : number, : number, ... }
const tractionSchema = z.object({
- companyName: z.string().min(2).max(50).default("presenton").meta({
- description: "Company name displayed in header",
- }),
- date: z.string().min(5).max(50).default("June 13, 2038").meta({
- description: "Today Date displayed in header",
- }),
+
+
title: z.string().default("Company Traction").meta({
description: "Main title of the slide",
}),
@@ -48,6 +44,9 @@ const tractionSchema = z.object({
description:
"Main content text describing the company's traction and growth momentum.",
}),
+ tableMode: z.boolean().default(false),
+ tableColumns: z.array(z.string().min(1).max(40)).min(2).max(10).default(["Metric", "Value"]),
+ tableRows: z.array(z.array(z.string().min(0).max(200)).min(2).max(10)).min(1).max(30).default([["Users", "10K+"], ["Revenue", "$1.2M"], ["Satisfaction", "95%"]]),
// growthStats is a list of objects, each with a 'year' and any number of metric keys (all numbers)
growthStats: z
.array(growthStatsSchema)
@@ -181,49 +180,60 @@ const CompanyTractionSlideLayout: React.FC = ({ data }) => {
rel="stylesheet"
/>
{/* Header */}
-
- {data?.companyName}
- {data?.date}
-
+ {((data as any)?.__companyName__ || (data as any)?._logo_url__) && (
+
+
+
+
+ {(data as any)?._logo_url__ &&

}
+ {(data as any)?.__companyName__ &&
+ {(data as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
{/* Main Content */}
{/* Left Column - Chart with Title Below */}
-
+
{data?.title}
-
+
-
-
+
+
{seriesKeys.map((key, idx) => (
@@ -231,18 +241,18 @@ const CompanyTractionSlideLayout: React.FC = ({ data }) => {
key={key}
type="monotone"
dataKey={key}
- stroke={defaultColors[idx % defaultColors.length]}
+ stroke={`var(--graph-${idx}, ${defaultColors[idx % defaultColors.length]})`}
strokeWidth={3}
name={key
.replace(/([A-Z])/g, " $1")
.replace(/^./, (str) => str.toUpperCase())}
dot={{
r: 4,
- fill: defaultColors[idx % defaultColors.length],
+ fill: `var(--graph-${idx}, ${defaultColors[idx % defaultColors.length]})`,
}}
activeDot={{
r: 6,
- fill: defaultColors[idx % defaultColors.length],
+ fill: `var(--graph-${idx}, ${defaultColors[idx % defaultColors.length]})`,
}}
/>
))}
@@ -252,33 +262,63 @@ const CompanyTractionSlideLayout: React.FC = ({ data }) => {
- {/* Right Column - Description and Stats */}
+ {/* Right Column - Description and Stats or Table */}
-
+
{data?.description ||
"Traction is a period where the company is feeling momentum during its development period. If traction momentum is not harnessed, sales figures can decline and the customer base can shrink. In general, companies will judge success by the amount of revenue and new customers they receive."}
-
- {stats.map((stat, index) => (
-
-
- {stat.label}
-
-
- {stat.value}
-
-
- {stat.description}
-
+ {data?.tableMode ? (
+
+
+
+
+
+ {data.tableColumns?.map((col, idx) => (
+ |
+ {col}
+ |
+ ))}
+
+
+
+ {data.tableRows?.map((row, rIdx) => (
+
+ {row.map((cell, cIdx) => (
+ |
+ {cell}
+ |
+ ))}
+
+ ))}
+
+
- ))}
-
+
+ ) : (
+
+ {stats.map((stat, index) => (
+
+
+ {stat.label}
+
+
+ {stat.value}
+
+
+ {stat.description}
+
+
+ ))}
+
+ )}
-
+
>
);
diff --git a/servers/nextjs/presentation-templates/modern/2AboutCompanySlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/ImageAndDescriptionLayout.tsx
similarity index 64%
rename from servers/nextjs/presentation-templates/modern/2AboutCompanySlideLayout.tsx
rename to servers/nextjs/app/presentation-templates/modern/ImageAndDescriptionLayout.tsx
index 0a497265..d6320517 100644
--- a/servers/nextjs/presentation-templates/modern/2AboutCompanySlideLayout.tsx
+++ b/servers/nextjs/app/presentation-templates/modern/ImageAndDescriptionLayout.tsx
@@ -1,47 +1,46 @@
import React from "react";
import * as z from "zod";
-import { ImageSchema, IconSchema } from "@/presentation-templates/defaultSchemes";
+import { ImageSchema } from "../defaultSchemes";
-export const layoutId = "about-company-slide";
-export const layoutName = "About Our Company Slide";
+export const layoutId = "image-and-description";
+export const layoutName = "Image And Description";
export const layoutDescription =
- "A slide layout providing an overview of the company, its background, and key information.";
+ "A slide layout with a title, a description, and an image.";
-const aboutCompanySlideSchema = z.object({
- title: z.string().min(3).max(30).default("About Our Company").meta({
+const imageWithDescriptionSlideSchema = z.object({
+ title: z.string().min(3).max(30).default("Image With Description").meta({
description: "Main title of the slide",
}),
content: z
.string()
.min(25)
- .max(400)
+ .max(300)
.default(
"In the presentation session, the background/introduction can be filled with information that is arranged systematically and effectively with respect to an interesting topic to be used as material for discussion at the opening of the presentation session. The introduction can provide a general overview for those who are listening to your presentation so that the key words on the topic of discussion are emphasized during this background/introductory presentation session.",
)
.meta({
description: "Main content text describing the company or topic",
}),
- companyName: z.string().min(2).max(50).default("presenton").meta({
- description: "Company name displayed in header",
- }),
- date: z.string().min(5).max(30).default("June 13, 2038").meta({
- description: "Today Date displayed in header",
- }),
- image: ImageSchema.optional().meta({
+
+ image: ImageSchema.default({
+ __image_url__:
+ "https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?q=80&w=1600&auto=format&fit=crop",
+ __image_prompt__: "Abstract business background",
+ }).meta({
description:
"Optional supporting image for the slide (building, office, etc.)",
}),
});
-export const Schema = aboutCompanySlideSchema;
+export const Schema = imageWithDescriptionSlideSchema;
-export type AboutCompanySlideData = z.infer;
+export type ImageWithDescriptionSlideData = z.infer;
-interface AboutCompanySlideLayoutProps {
- data?: Partial;
+interface ImageWithDescriptionSlideLayoutProps {
+ data?: Partial;
}
-const AboutCompanySlideLayout: React.FC = ({
+const ImageWithDescriptionSlideLayout: React.FC = ({
data: slideData,
}) => {
return (
@@ -53,16 +52,26 @@ const AboutCompanySlideLayout: React.FC = ({
/>
{/* Header */}
-
- {slideData?.companyName}
- {slideData?.date}
-
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
{/* Main content area */}
@@ -123,13 +132,13 @@ const AboutCompanySlideLayout: React.FC
= ({
{/* Right side - Content */}
{slideData?.title && (
-
+
{slideData?.title}
)}
{slideData?.content && (
-
+
{slideData?.content}
)}
@@ -140,4 +149,4 @@ const AboutCompanySlideLayout: React.FC
= ({
);
};
-export default AboutCompanySlideLayout;
+export default ImageWithDescriptionSlideLayout;
diff --git a/servers/nextjs/app/presentation-templates/modern/ImageListWithDescriptionSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/ImageListWithDescriptionSlideLayout.tsx
new file mode 100644
index 00000000..189ebe98
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/modern/ImageListWithDescriptionSlideLayout.tsx
@@ -0,0 +1,193 @@
+import React from "react";
+import * as z from "zod";
+import { ImageSchema } from "../defaultSchemes";
+
+export const layoutId = "image-list-with-description";
+export const layoutName = "Image List with Description";
+export const layoutDescription =
+ "An image list with description slide layout";
+
+const imageListWithDescriptionSlideSchema = z.object({
+
+
+ title: z.string().min(3).max(40).default("Product Overview").meta({
+ description: "Main title of the slide. Max 4 words",
+ }),
+ // removed mainDescription
+ products: z
+ .array(
+ z.object({
+ title: z.string().min(3).max(50).meta({
+ description: "Product title",
+ }),
+ description: z.string().min(30).max(100).meta({
+ description: "Product description",
+ }),
+ image: ImageSchema.meta({
+ description: "Product image",
+ }),
+ isBlueBackground: z.boolean().default(false).meta({
+ description: "Whether the product box has a blue background",
+ }),
+ }),
+ )
+ .min(1)
+ .max(4)
+ .default([
+ {
+ title: "Internet of Things",
+ description:
+ "Detail and explain each product. Our examination of community and market issues increases with additional products/services.",
+ image: {
+ __image_url__:
+ "https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=300&h=200&fit=crop",
+ __image_prompt__: "Person working on electronics with headphones",
+ },
+ isBlueBackground: true,
+ },
+ {
+ title: "Analytics Dashboard",
+ description:
+ "Our alternate product category is available. Our products must work together to solve social and economic issues.",
+ image: {
+ __image_url__: "https://images.unsplash.com/photo-1556157382-97eda2d62296?w=300&h=200&fit=crop",
+ __image_prompt__: "Analytics dashboard on laptop screen",
+ },
+ isBlueBackground: true,
+ },
+ {
+ title: "Mobile App Suite",
+ description:
+ "Our alternate product category is available. Our products must work together to solve social and economic issues.",
+ image: {
+ __image_url__: "https://images.unsplash.com/photo-1511707171634-5f897ff02aa9?w=300&h=200&fit=crop",
+ __image_prompt__: "Mobile apps on smartphone in hand",
+ },
+ isBlueBackground: true,
+ },
+ {
+ title: "Smart Home Platform",
+ description:
+ "Our alternate product category is available. Our products must work together to solve social and economic issues.",
+ image: {
+ __image_url__:
+ "https://images.unsplash.com/photo-1573164713988-8665fc963095?w=300&h=200&fit=crop",
+ __image_prompt__:
+ "Woman working at computer with technical equipment",
+ },
+ isBlueBackground: true,
+ },
+ ])
+ .meta({
+ description: "List of products or services to showcase",
+ }),
+});
+
+export const Schema = imageListWithDescriptionSlideSchema;
+
+export type ImageListWithDescriptionSlideData = z.infer<
+ typeof imageListWithDescriptionSlideSchema
+>;
+
+interface ImageListWithDescriptionSlideLayoutProps {
+ data?: Partial;
+}
+
+const ImageListWithDescriptionSlideLayout: React.FC = ({
+ data: slideData,
+}) => {
+ const products = slideData?.products || [];
+
+ // Make the product boxes smaller
+ const PRODUCT_BOX_HEIGHT = 340; // px (reduced height)
+ const PRODUCT_BOX_WIDTH = 200; // px (smaller than before)
+ const TEXT_SECTION_HEIGHT = Math.round(PRODUCT_BOX_HEIGHT * 0.56); // ~190px
+ const IMAGE_SECTION_HEIGHT = PRODUCT_BOX_HEIGHT - TEXT_SECTION_HEIGHT; // ~150px
+
+ return (
+ <>
+ {/* Import Google Fonts */}
+
+
+
+ {/* Header */}
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
+
+ {/* Main Content */}
+
+ {/* Title at the top */}
+
+
+ {slideData?.title}
+
+
+
+ {/* Product Row centered (up to 4 items) */}
+
+ {products.slice(0, 4).map((prod, idx) => (
+
+ {/* Alternate layout per column: even -> text first; odd -> image first */}
+ {idx % 2 === 0 ? (
+ <>
+
+
{prod.title}
+
{prod.description}
+
+
+

+
+ >
+ ) : (
+ <>
+
+

+
+
+
{prod.title}
+
{prod.description}
+
+ >
+ )}
+
+ ))}
+
+
+ {/* Bottom Border */}
+
+
+ >
+ );
+};
+
+export default ImageListWithDescriptionSlideLayout;
diff --git a/servers/nextjs/presentation-templates/modern/z10TeamSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/ImagesWithDescriptionLayout.tsx
similarity index 62%
rename from servers/nextjs/presentation-templates/modern/z10TeamSlideLayout.tsx
rename to servers/nextjs/app/presentation-templates/modern/ImagesWithDescriptionLayout.tsx
index 0928445c..e907731d 100644
--- a/servers/nextjs/presentation-templates/modern/z10TeamSlideLayout.tsx
+++ b/servers/nextjs/app/presentation-templates/modern/ImagesWithDescriptionLayout.tsx
@@ -1,21 +1,18 @@
import React from "react";
import * as z from "zod";
-import { ImageSchema } from "@/presentation-templates/defaultSchemes";
+import { ImageSchema } from "../defaultSchemes";
-export const layoutId = "modern-team-slide";
-export const layoutName = "Modern Team Slide";
+export const layoutId = "images-with-description";
+export const layoutName = "Images With Description";
export const layoutDescription =
- "A clean modern team slide showcasing team members with professional profiles and blue-white design.";
+ "Images with description slide layout";
-const teamMemberSchema = z.object({
+const imagesWithDescriptionSlideSchema = z.object({
name: z.string().min(2).max(50).meta({
- description: "Team member's full name",
- }),
- position: z.string().min(2).max(50).meta({
- description: "Job title or position",
+ description: "Card title",
}),
description: z.string().min(20).max(120).meta({
- description: "Brief professional description of the team member",
+ description: "Short description for the card",
}),
image: ImageSchema,
linkedIn: z.string().optional().meta({
@@ -23,21 +20,20 @@ const teamMemberSchema = z.object({
}),
});
-const modernTeamSlideSchema = z.object({
- title: z.string().min(3).max(15).default("Our Team").meta({
+const imagesWithDescriptionSlideSchema2 = z.object({
+ title: z.string().min(3).max(40).default("Our Team").meta({
description: "Main title of the slide",
}),
subtitle: z.string().min(10).max(120).optional().meta({
description: "Optional subtitle describing the team",
}),
teamMembers: z
- .array(teamMemberSchema)
+ .array(imagesWithDescriptionSlideSchema)
.min(2)
- .max(3)
+ .max(4)
.default([
{
name: "Sarah Johnson",
- position: "CEO & Founder",
description:
"Strategic leader with 15+ years experience in technology and business development. Former VP at Fortune 500 company.",
image: {
@@ -48,7 +44,6 @@ const modernTeamSlideSchema = z.object({
},
{
name: "Michael Chen",
- position: "CTO",
description:
"Technology expert specializing in scalable architecture and AI solutions. PhD in Computer Science from MIT.",
image: {
@@ -59,7 +54,6 @@ const modernTeamSlideSchema = z.object({
},
{
name: "Emily Rodriguez",
- position: "VP of Sales",
description:
"Sales leader with proven track record of building high-performing teams and driving revenue growth in B2B markets.",
image: {
@@ -70,7 +64,6 @@ const modernTeamSlideSchema = z.object({
},
{
name: "David Kim",
- position: "Head of Product",
description:
"Product strategist focused on user experience and market-driven solutions. Former product manager at leading tech companies.",
image: {
@@ -83,23 +76,19 @@ const modernTeamSlideSchema = z.object({
.meta({
description: "List of team members with their information",
}),
- companyName: z.string().min(2).max(50).default("presenton").meta({
- description: "Company name displayed in header",
- }),
- date: z.string().min(5).max(50).default("June 13, 2038").meta({
- description: "Today Date displayed in header",
- }),
+
+
});
-export const Schema = modernTeamSlideSchema;
+export const Schema = imagesWithDescriptionSlideSchema2;
-export type ModernTeamSlideData = z.infer;
+export type ImagesWithDescriptionSlideData = z.infer;
-interface ModernTeamSlideLayoutProps {
- data?: Partial;
+interface ImagesWithDescriptionSlideLayoutProps {
+ data?: Partial;
}
-const ModernTeamSlideLayout: React.FC = ({
+const ImagesWithDescriptionSlideLayout: React.FC = ({
data: slideData,
}) => {
return (
@@ -111,40 +100,54 @@ const ModernTeamSlideLayout: React.FC = ({
/>
{/* Header */}
-
- {slideData?.companyName}
- {slideData?.date}
-
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
{/* Main Content */}
-
+
{/* Title */}
{slideData?.title}
{/* Subtitle */}
-
+
{slideData?.subtitle}
- {/* Team Members Row */}
-
+ {/* Items Row */}
+
{slideData?.teamMembers?.map((member, idx) => (
- {/* Photo */}
-
+ {/* Image full width */}
+
{member.image.__image_url__ && (

= ({
)}
{/* Name */}
-
+
{member.name}
- {/* Position Badge */}
-
- {member.position}
-
{/* Description */}
-
+
{member.description}
{/* LinkedIn Link (if provided) */}
@@ -171,7 +170,8 @@ const ModernTeamSlideLayout: React.FC
= ({
href={member.linkedIn}
target="_blank"
rel="noopener noreferrer"
- className="inline-flex items-center text-xs text-blue-600 hover:text-blue-800 transition-colors duration-200 mt-1"
+ className="inline-flex items-center text-xs transition-colors duration-200 mt-1"
+ style={{ color: 'var(--background-text, #234CD9)' }}
>
{/* Bottom Divider */}
-
+
>
);
};
-export default ModernTeamSlideLayout;
+export default ImagesWithDescriptionSlideLayout;
diff --git a/servers/nextjs/app/presentation-templates/modern/IntroSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/IntroSlideLayout.tsx
new file mode 100644
index 00000000..235e8449
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/modern/IntroSlideLayout.tsx
@@ -0,0 +1,141 @@
+import React from "react";
+import * as z from "zod";
+import { ImageSchema } from "../defaultSchemes";
+
+export const layoutId = "intro-pitchdeck-slide";
+export const layoutName = "Intro Pitch Deck Slide";
+export const layoutDescription =
+ "A visually appealing introduction slide for a pitch deck, featuring a large title, company name, date, and contact information with a modern design. This Slide is always the first slide in a pitch deck, setting the tone for the presentation with a clean and professional look.";
+const introPitchDeckSchema = z.object({
+ title: z.string().min(2).max(15).default("Pitch Deck").meta({
+ description: "Main title of the slide",
+ }),
+ description: z
+ .string()
+ .min(1)
+ .max(200)
+ .default("Add a short subtitle or description here. Add a short subtitle or description here. Add a short subtitle or description here. Add a short subtitle or description here.")
+ .meta({
+ description: "Description shown below the title",
+ }),
+ introCard: z
+ .object({
+ enabled: z.boolean().default(true),
+ name: z.string().min(1).max(60).default("John Doe"),
+ date: z.string().min(1).max(60).default("December 2025"),
+ })
+ .default({ enabled: true, name: "John Doe", date: "December 2025" })
+ .meta({ description: "Optional intro card shown below description" }),
+ image: ImageSchema.default({
+ __image_url__:
+ "https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?q=80&w=1600&auto=format&fit=crop",
+ __image_prompt__: "Abstract business background",
+ }),
+
+
+});
+
+export const Schema = introPitchDeckSchema;
+export type IntroPitchDeckData = z.infer
;
+
+interface IntroSlideLayoutProps {
+ data: Partial;
+}
+
+const IntroPitchDeckSlide: React.FC = ({
+ data: slideData,
+}) => {
+
+ return (
+ <>
+ {/* Montserrat Font */}
+
+
+ {/* Top Header */}
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
+
+ {/* Main Title and Description (shifted slightly up) */}
+
+ {slideData?.title && (
+
+
+ {slideData?.title}
+
+
+
+ )}
+
+ {slideData?.description}
+
+ {slideData?.introCard?.enabled && (
+
+
+ {(slideData?.introCard?.name || "").split(" ").map(p => p.charAt(0)).join("").slice(0, 2).toUpperCase()}
+
+
+
{slideData?.introCard?.name}
+
{slideData?.introCard?.date}
+
+
+ )}
+
+
+ {/* Right Image */}
+ {slideData?.image && slideData?.image?.__image_url__ && (
+
+

+
+ )}
+
+ >
+ );
+};
+
+export default IntroPitchDeckSlide;
diff --git a/servers/nextjs/presentation-templates/modern/6MarketSizeSlideLayout.tsx b/servers/nextjs/app/presentation-templates/modern/MetricsWithDescription.tsx
similarity index 63%
rename from servers/nextjs/presentation-templates/modern/6MarketSizeSlideLayout.tsx
rename to servers/nextjs/app/presentation-templates/modern/MetricsWithDescription.tsx
index 5ee6ff0e..9096f133 100644
--- a/servers/nextjs/presentation-templates/modern/6MarketSizeSlideLayout.tsx
+++ b/servers/nextjs/app/presentation-templates/modern/MetricsWithDescription.tsx
@@ -1,22 +1,18 @@
import React from "react";
import * as z from "zod";
-import { ImageSchema } from "@/presentation-templates/defaultSchemes";
+import { ImageSchema } from "../defaultSchemes";
-export const layoutId = "market-size-pitchdeck-slide";
-export const layoutName = "Market Size Pitch Deck Slide";
+export const layoutId = "metrics-with-description-image";
+export const layoutName = "Metrics With Description and Image Slide Layout";
export const layoutDescription =
- "A professional slide layout designed to present market size statistics, including TAM, SAM, and SOM, with a world map and key metrics.";
+ "Metrics with description slide layout with an image as whole for the slide";
const marketSizeSlideSchema = z.object({
title: z.string().min(3).max(15).default("Market Size").meta({
description: "Main slide title",
}),
- companyName: z.string().min(2).max(50).default("presenton").meta({
- description: "Company name displayed in header",
- }),
- date: z.string().min(5).max(50).default("June 13, 2038").meta({
- description: "Today Date displayed in header",
- }),
+
+
mapImage: ImageSchema.default({
__image_url__:
"https://upload.wikimedia.org/wikipedia/commons/8/80/World_map_-_low_resolution.svg", // You can quickly find a world map image via a Google search or use a free resource like Wikimedia Commons
@@ -31,7 +27,7 @@ const marketSizeSlideSchema = z.object({
}),
)
.min(1)
- .max(3)
+ .max(4)
.default([
{
label: "Total Available Market (TAM)",
@@ -46,11 +42,17 @@ const marketSizeSlideSchema = z.object({
"It is a part of TAM that has the potential to become a target market for the company by considering the type of product, technology available and geographical conditions.",
},
{
- label: "Serviceable Obtainable Market (SOM)",
- value: "167 Million",
+ label: "Total Available Market (TAM)",
+ value: "1.4 Billion",
description:
- "The SOM is a smaller fraction of the SAM that is the target of a serviceable and realistically achievable market in the short to medium term.",
+ "In the TAM Section, we can fill in the potential of any person who can buy an offer or the maximum amount of revenue a business can earn by selling their offer.",
},
+ {
+ label: "Serviceable Available Market (SAM)",
+ value: "194 Million",
+ description:
+ "It is a part of TAM that has the potential to become a target market for the company by considering the type of product, technology available and geographical conditions.",
+ }
])
.meta({
description:
@@ -87,16 +89,26 @@ const MarketSizeSlideLayout: React.FC = ({
/>
{/* Header */}
-
- {slideData?.companyName || "Rimberio"}
- {slideData?.date || "June 13, 2038"}
-
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
{/* Main Content */}
@@ -105,9 +117,8 @@ const MarketSizeSlideLayout: React.FC
= ({
{/* Move the title down to align with the top of the market stats */}
+ className="text-5xl font-bold mb-8 leading-tight text-left"
+ style={{ color: 'var(--background-text, #1E4CD9)' }}>
{slideData?.title || "Market Size"}
@@ -121,27 +132,27 @@ const MarketSizeSlideLayout: React.FC = ({
)}
{slideData?.description && (
-
+
{slideData?.description}
)}
- {/* Market Stats on the right */}
+ {/* Market Stats on the right - vertically centered */}
-
+
{stats.map((stat, index) => (
-
+
{stat.label}
-
-
+
{stat.description}
diff --git a/servers/nextjs/app/presentation-templates/modern/TableOfContentsLayout.tsx b/servers/nextjs/app/presentation-templates/modern/TableOfContentsLayout.tsx
new file mode 100644
index 00000000..b6bcd312
--- /dev/null
+++ b/servers/nextjs/app/presentation-templates/modern/TableOfContentsLayout.tsx
@@ -0,0 +1,112 @@
+import React from "react";
+import * as z from "zod";
+
+export const layoutId = "table-of-contents";
+export const layoutName = "Table Of Contents";
+export const layoutDescription =
+ "A clean table of contents layout with up to 10 items, each with a short description, styled to match the modern template.";
+
+const TocItemSchema = z.object({
+ title: z.string().min(3).max(40).meta({
+ description: "Item title (short)",
+ }),
+ description: z.string().min(10).max(80).meta({
+ description: "Short item description",
+ }),
+});
+
+const tableOfContentsSchema = z.object({
+ title: z.string().min(3).max(40).default("Table Of Contents").meta({
+ description: "Main title displayed at the top",
+ }),
+ items: z
+ .array(TocItemSchema)
+ .min(2)
+ .max(10)
+ .default(
+ Array.from({ length: 10 }).map((_, i) => ({
+ title: `Section ${i + 1}`,
+ description: "Brief description for this section.",
+ }))
+ )
+ .meta({ description: "List of up to 10 TOC items" }),
+
+});
+
+export const Schema = tableOfContentsSchema;
+export type TableOfContentsData = z.infer
;
+
+interface TableOfContentsLayoutProps {
+ data?: Partial;
+}
+
+const TableOfContentsLayout: React.FC = ({
+ data: slideData,
+}) => {
+ const items = slideData?.items?.slice(0, 10) || [];
+
+ return (
+ <>
+ {/* Import Montserrat Font */}
+
+
+
+ {/* Header */}
+ {((slideData as any)?.__companyName__ || (slideData as any)?._logo_url__) && (
+
+
+
+
+ {(slideData as any)?._logo_url__ &&

}
+ {(slideData as any)?.__companyName__ &&
+ {(slideData as any)?.__companyName__ || 'Company Name'}
+ }
+
+
+
+ )}
+
+ {/* Title */}
+
+
+ {slideData?.title}
+
+
+
+ {/* TOC Grid */}
+
+
+ {items.map((item, idx) => (
+