import {defineArrayMember, defineField, defineType} from 'sanity' import {DocumentTextIcon} from '@sanity/icons' import {WorkSlugInput} from '../components/WorkSlugInput' export const workType = defineType({ name: 'work', title: 'Work', type: 'document', icon: DocumentTextIcon, fields: [ defineField({ name: 'title', title: 'Title', type: 'string', validation: (Rule) => Rule.required(), }), defineField({ name: 'composer', title: 'Composer', type: 'reference', to: [{type: 'composer'}], validation: (Rule) => Rule.required(), }), defineField({ name: 'arranger', title: 'Arranger', type: 'reference', to: [{type: 'composer'}], }), defineField({ name: 'slug', title: 'Slug', type: 'slug', components: { input: WorkSlugInput, }, validation: (Rule) => Rule.required(), }), defineField({ name: 'description', title: 'Description', type: 'array', of: [defineArrayMember({type: 'block'})], }), ], orderings: [ { title: 'Title (A → Z)', name: 'titleAsc', by: [{field: 'title', direction: 'asc'}], }, { title: 'Title (Z → A)', name: 'titleDesc', by: [{field: 'title', direction: 'desc'}], }, ], preview: { select: { title: 'title', composer: 'composer.name', arranger: 'arranger.name', }, prepare({title, composer, arranger}) { let subtitle = '' if (composer && arranger) { subtitle = `${composer} (arr. ${arranger})` } else if (composer) { subtitle = composer } else if (arranger) { subtitle = `arr. ${arranger}` } return { title, subtitle, } }, }, })