content.tsx (1502B)
1 import React from "react"; 2 import { Container } from "../util/container"; 3 import { Section } from "../util/section"; 4 import { TinaMarkdown } from "tinacms/dist/rich-text"; 5 import type { TinaTemplate } from "tinacms"; 6 import { PageBlocksContent } from "../../tina/__generated__/types"; 7 import { tinaField } from "tinacms/dist/react"; 8 9 export const Content = ({ data }: { data: PageBlocksContent }) => { 10 return ( 11 <Section color={data.color}> 12 <Container 13 className={`prose prose-lg ${ 14 data.color === "primary" ? `prose-primary` : `dark:prose-dark` 15 }`} 16 data-tina-field={tinaField(data, "body")} 17 size="large" 18 width="medium" 19 > 20 <TinaMarkdown content={data.body} /> 21 </Container> 22 </Section> 23 ); 24 }; 25 26 export const contentBlockSchema: TinaTemplate = { 27 name: "content", 28 label: "Content", 29 ui: { 30 previewSrc: "/blocks/content.png", 31 defaultItem: { 32 body: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.", 33 }, 34 }, 35 fields: [ 36 { 37 type: "rich-text", 38 label: "Body", 39 name: "body", 40 }, 41 { 42 type: "string", 43 label: "Color", 44 name: "color", 45 options: [ 46 { label: "Default", value: "default" }, 47 { label: "Tint", value: "tint" }, 48 { label: "Primary", value: "primary" }, 49 ], 50 }, 51 ], 52 };