410 lines
8.7 KiB
TypeScript
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,
|
|
},
|
|
],
|
|
},
|
|
];
|