mirror of
https://github.com/kingomarnajjar/gatsby-starter-netlify-cms.git
synced 2026-07-26 06:37:25 +10:00
64 lines
2.4 KiB
JavaScript
64 lines
2.4 KiB
JavaScript
import React from 'react';
|
|
import CMS from 'netlify-cms';
|
|
|
|
import { AboutPageTemplate } from '../src/templates/about-page';
|
|
import { ProductPageTemplate } from '../src/templates/product-page';
|
|
import { BlogPostTemplate } from '../src/templates/blog-post';
|
|
|
|
const AboutPagePreview = ({ entry, widgetFor }) =>
|
|
<AboutPageTemplate title={entry.getIn(['data', 'title'])} content={widgetFor('body')} />;
|
|
|
|
const BlogPostPreview = ({ entry, widgetFor }) => (
|
|
<BlogPostTemplate
|
|
content={widgetFor('body')}
|
|
description={entry.getIn(['data', 'description'])}
|
|
title={entry.getIn(['data', 'title'])}
|
|
/>
|
|
);
|
|
|
|
const ProductPagePreview = ({ entry, getAsset }) => {
|
|
const entryBlurbs = entry.getIn(['data', 'intro', 'blurbs']);
|
|
const blurbs = entryBlurbs ? entryBlurbs.toJS() : [];
|
|
|
|
const entryTestimonials = entry.getIn(['data', 'testimonials']);
|
|
const testimonials = entryTestimonials ? entryTestimonials.toJS() : [];
|
|
|
|
const entryPricingPlans = entry.getIn(['data', 'pricing', 'plans']);
|
|
const pricingPlans = entryPricingPlans ? entryPricingPlans.toJS() : [];
|
|
|
|
return (<ProductPageTemplate
|
|
image={entry.getIn(['data', 'image'])}
|
|
title={entry.getIn(['data', 'title'])}
|
|
heading={entry.getIn(['data', 'heading'])}
|
|
description={entry.getIn(['data', 'description'])}
|
|
intro={{ blurbs }}
|
|
main={{
|
|
heading: entry.getIn(['data', 'main', 'heading']),
|
|
description: entry.getIn(['data', 'main', 'description']),
|
|
image1: {
|
|
image: getAsset(entry.getIn(['data', 'main', 'image1', 'image'])),
|
|
alt: entry.getIn(['data', 'main', 'image1', 'alt']),
|
|
},
|
|
image2: {
|
|
image: getAsset(entry.getIn(['data', 'main', 'image2', 'image'])),
|
|
alt: entry.getIn(['data', 'main', 'image2', 'alt']),
|
|
},
|
|
image3: {
|
|
image: getAsset(entry.getIn(['data', 'main', 'image3', 'image'])),
|
|
alt: entry.getIn(['data', 'main', 'image3', 'alt']),
|
|
},
|
|
}}
|
|
fullImage={entry.getIn(['data', 'full_image'])}
|
|
testimonials={testimonials}
|
|
pricing={{
|
|
heading: entry.getIn(['data', 'pricing', 'heading']),
|
|
description: entry.getIn(['data', 'pricing', 'description']),
|
|
plans: pricingPlans,
|
|
}}
|
|
/>);
|
|
};
|
|
|
|
CMS.registerPreviewStyle('/styles.css');
|
|
CMS.registerPreviewTemplate('about', AboutPagePreview);
|
|
CMS.registerPreviewTemplate('products', ProductPagePreview);
|
|
CMS.registerPreviewTemplate('blog', BlogPostPreview);
|