import {defineField, defineType} from 'sanity' export default defineType({ name: 'changelogEntry', title: 'Changelog Entry', type: 'document', fields: [ defineField({ name: 'version', title: 'Version', type: 'string', description: 'e.g. v1.2.0', validation: (Rule) => Rule.required(), }), defineField({ name: 'title', title: 'Title', type: 'string', validation: (Rule) => Rule.required().max(120), }), defineField({ name: 'publishedAt', title: 'Published At', type: 'datetime', initialValue: () => new Date().toISOString(), validation: (Rule) => Rule.required(), }), defineField({ name: 'tags', title: 'Tags', type: 'array', of: [ { type: 'string', options: { list: [ {title: 'Feature', value: 'feature'}, {title: 'Fix', value: 'fix'}, {title: 'Improvement', value: 'improvement'}, ], }, }, ], }), defineField({ name: 'body', title: 'Body', type: 'array', of: [ {type: 'block'}, { type: 'image', options: {hotspot: true}, fields: [ defineField({name: 'alt', title: 'Alt Text', type: 'string'}), defineField({name: 'caption', title: 'Caption', type: 'string'}), ], }, ], }), ], orderings: [ { title: 'Published Date, Newest', name: 'publishedAtDesc', by: [{field: 'publishedAt', direction: 'desc'}], }, ], preview: { select: { title: 'title', version: 'version', publishedAt: 'publishedAt', }, prepare({title, version, publishedAt}) { const date = publishedAt ? new Date(publishedAt).toLocaleDateString() : 'Draft' return { title: `${version} — ${title}`, subtitle: date, } }, }, })