post.ts (2499B)
1 import type { Collection } from "tinacms"; 2 3 const Post: Collection = { 4 label: "Blog Posts", 5 name: "post", 6 path: "content/posts", 7 format: "mdx", 8 ui: { 9 router: ({ document }) => { 10 return `/posts/${document._sys.breadcrumbs.join("/")}`; 11 }, 12 }, 13 fields: [ 14 { 15 type: "string", 16 label: "Title", 17 name: "title", 18 isTitle: true, 19 required: true, 20 }, 21 { 22 type: "image", 23 name: "heroImg", 24 label: "Hero Image", 25 }, 26 { 27 type: "rich-text", 28 label: "Excerpt", 29 name: "excerpt", 30 }, 31 { 32 type: "reference", 33 label: "Author", 34 name: "author", 35 collections: ["author"], 36 }, 37 { 38 type: "datetime", 39 label: "Posted Date", 40 name: "date", 41 ui: { 42 dateFormat: "MMMM DD YYYY", 43 timeFormat: "hh:mm A", 44 }, 45 }, 46 { 47 type: "rich-text", 48 label: "Body", 49 name: "_body", 50 templates: [ 51 { 52 name: "DateTime", 53 label: "Date & Time", 54 inline: true, 55 fields: [ 56 { 57 name: "format", 58 label: "Format", 59 type: "string", 60 options: ["utc", "iso", "local"], 61 }, 62 ], 63 }, 64 { 65 name: "BlockQuote", 66 label: "Block Quote", 67 fields: [ 68 { 69 name: "children", 70 label: "Quote", 71 type: "rich-text", 72 }, 73 { 74 name: "authorName", 75 label: "Author", 76 type: "string", 77 }, 78 ], 79 }, 80 { 81 name: "NewsletterSignup", 82 label: "Newsletter Sign Up", 83 fields: [ 84 { 85 name: "children", 86 label: "CTA", 87 type: "rich-text", 88 }, 89 { 90 name: "placeholder", 91 label: "Placeholder", 92 type: "string", 93 }, 94 { 95 name: "buttonText", 96 label: "Button Text", 97 type: "string", 98 }, 99 { 100 name: "disclaimer", 101 label: "Disclaimer", 102 type: "rich-text", 103 }, 104 ], 105 ui: { 106 defaultItem: { 107 placeholder: "Enter your email", 108 buttonText: "Notify Me", 109 }, 110 }, 111 }, 112 ], 113 isBody: true, 114 }, 115 ], 116 }; 117 118 export default Post;