import { defineField, defineType } from 'sanity'; export const postType = defineType({ name: 'post', title: 'Post', type: 'document', fields: [ defineField({ name: 'title', title: 'Title', type: 'string', validation: (r) => r.required(), }), defineField({ name: 'slug', title: 'Slug', type: 'slug', options: { source: 'title', maxLength: 96 }, validation: (r) => r.required(), }), defineField({ name: 'date', title: 'Date', type: 'date', options: { dateFormat: 'YYYY-MM-DD' }, validation: (r) => r.required(), }), defineField({ name: 'category', title: 'Category', type: 'string', options: { list: [ { title: 'News', value: 'News' }, { title: 'Events', value: 'Events' }, { title: 'Fundraising', value: 'Fundraising' }, ], }, initialValue: 'News', validation: (r) => r.required(), }), defineField({ name: 'summary', title: 'Summary', type: 'text', rows: 3, description: 'One or two sentences shown in article cards and meta descriptions.', validation: (r) => r.required().max(300), }), defineField({ name: 'image', title: 'Cover image', type: 'image', options: { hotspot: true }, fields: [ defineField({ name: 'alt', title: 'Alt text', type: 'string', }), ], }), defineField({ name: 'body', title: 'Body', type: 'array', of: [ { type: 'block', styles: [ { title: 'Normal', value: 'normal' }, { title: 'Heading 2', value: 'h2' }, { title: 'Heading 3', value: 'h3' }, { title: 'Quote', value: 'blockquote' }, ], marks: { decorators: [ { title: 'Bold', value: 'strong' }, { title: 'Italic', value: 'em' }, ], annotations: [ { name: 'link', type: 'object', title: 'Link', fields: [ { name: 'href', type: 'url', title: 'URL', validation: (r) => r.uri({ allowRelative: true, scheme: ['http', 'https', 'mailto', 'tel'] }), }, { name: 'blank', type: 'boolean', title: 'Open in new tab', initialValue: false, }, ], }, ], }, }, { type: 'image', options: { hotspot: true } }, ], }), ], preview: { select: { title: 'title', subtitle: 'date', media: 'image', }, }, });