Files
convex-monorepo-payload/apps/next/src/payload/globals/landing-page-blocks.ts
T

410 lines
8.7 KiB
TypeScript

import type { Block } from 'payload';
import {
defaultLandingCtaContent,
defaultLandingFaqContent,
defaultLandingFeaturesContent,
defaultLandingHeroContent,
defaultLandingLogoCloudContent,
defaultLandingPricingContent,
defaultLandingStatsContent,
defaultLandingTechStackContent,
defaultLandingTestimonialsContent,
} from '../../components/landing/content';
export const landingPageBlocks: Block[] = [
{
slug: 'hero',
labels: {
singular: 'Hero Section',
plural: 'Hero Sections',
},
fields: [
{
name: 'badgeEmoji',
type: 'text',
defaultValue: defaultLandingHeroContent.badgeEmoji,
},
{
name: 'badgeText',
type: 'text',
defaultValue: defaultLandingHeroContent.badgeText,
},
{
name: 'headingPrefix',
type: 'text',
defaultValue: defaultLandingHeroContent.headingPrefix,
},
{
name: 'headingHighlight',
type: 'text',
defaultValue: defaultLandingHeroContent.headingHighlight,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingHeroContent.description,
},
{
name: 'primaryCta',
label: 'Primary CTA',
type: 'group',
fields: [
{
name: 'label',
type: 'text',
defaultValue: defaultLandingHeroContent.primaryCta.label,
},
{
name: 'url',
type: 'text',
defaultValue: defaultLandingHeroContent.primaryCta.url,
},
],
},
{
name: 'highlights',
type: 'array',
defaultValue: defaultLandingHeroContent.highlights.map((label) => ({
label,
})),
fields: [
{
name: 'label',
type: 'text',
},
],
},
],
},
{
slug: 'logoCloud',
labels: {
singular: 'Logo Cloud',
plural: 'Logo Clouds',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingLogoCloudContent.heading,
},
{
name: 'items',
type: 'array',
defaultValue: defaultLandingLogoCloudContent.items,
fields: [
{
name: 'name',
type: 'text',
},
{
name: 'accent',
type: 'text',
},
],
},
],
},
{
slug: 'features',
labels: {
singular: 'Features Section',
plural: 'Features Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingFeaturesContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingFeaturesContent.description,
},
{
name: 'items',
type: 'array',
defaultValue: defaultLandingFeaturesContent.items,
fields: [
{
name: 'icon',
type: 'text',
},
{
name: 'title',
type: 'text',
},
{
name: 'description',
type: 'textarea',
},
],
},
],
},
{
slug: 'stats',
labels: {
singular: 'Stats Section',
plural: 'Stats Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingStatsContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingStatsContent.description,
},
{
name: 'items',
type: 'array',
defaultValue: defaultLandingStatsContent.items,
fields: [
{
name: 'value',
type: 'text',
},
{
name: 'label',
type: 'text',
},
{
name: 'description',
type: 'textarea',
},
],
},
],
},
{
slug: 'techStack',
labels: {
singular: 'Tech Stack Section',
plural: 'Tech Stack Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingTechStackContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingTechStackContent.description,
},
{
name: 'categories',
type: 'array',
defaultValue: defaultLandingTechStackContent.categories,
fields: [
{
name: 'category',
type: 'text',
},
{
name: 'technologies',
type: 'array',
fields: [
{
name: 'name',
type: 'text',
},
{
name: 'description',
type: 'text',
},
],
},
],
},
],
},
{
slug: 'testimonials',
labels: {
singular: 'Testimonials Section',
plural: 'Testimonials Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingTestimonialsContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingTestimonialsContent.description,
},
{
name: 'items',
type: 'array',
defaultValue: defaultLandingTestimonialsContent.items,
fields: [
{
name: 'quote',
type: 'textarea',
},
{
name: 'name',
type: 'text',
},
{
name: 'role',
type: 'text',
},
{
name: 'company',
type: 'text',
},
{
name: 'avatarEmoji',
type: 'text',
},
],
},
],
},
{
slug: 'pricing',
labels: {
singular: 'Pricing Section',
plural: 'Pricing Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingPricingContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingPricingContent.description,
},
{
name: 'plans',
type: 'array',
defaultValue: defaultLandingPricingContent.plans.map((plan) => ({
...plan,
features: plan.features.map((label) => ({ label })),
})),
fields: [
{
name: 'name',
type: 'text',
},
{
name: 'price',
type: 'text',
},
{
name: 'billingPeriod',
type: 'text',
},
{
name: 'description',
type: 'textarea',
},
{
name: 'badge',
type: 'text',
},
{
name: 'isHighlighted',
type: 'checkbox',
},
{
name: 'ctaLabel',
type: 'text',
},
{
name: 'ctaUrl',
type: 'text',
},
{
name: 'features',
type: 'array',
fields: [
{
name: 'label',
type: 'text',
},
],
},
],
},
],
},
{
slug: 'faq',
labels: {
singular: 'FAQ Section',
plural: 'FAQ Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingFaqContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingFaqContent.description,
},
{
name: 'items',
type: 'array',
defaultValue: defaultLandingFaqContent.items,
fields: [
{
name: 'question',
type: 'text',
},
{
name: 'answer',
type: 'textarea',
},
],
},
],
},
{
slug: 'cta',
labels: {
singular: 'CTA Section',
plural: 'CTA Sections',
},
fields: [
{
name: 'heading',
type: 'text',
defaultValue: defaultLandingCtaContent.heading,
},
{
name: 'description',
type: 'textarea',
defaultValue: defaultLandingCtaContent.description,
},
{
name: 'commandLabel',
type: 'text',
defaultValue: defaultLandingCtaContent.commandLabel,
},
{
name: 'command',
type: 'textarea',
defaultValue: defaultLandingCtaContent.command,
},
],
},
];