import {defineArrayMember, defineField, defineType} from 'sanity' import {ComposeIcon} from '@sanity/icons' export const composerType = defineType({ name: 'composer', title: 'Composer', type: 'document', icon: ComposeIcon, fieldsets: [{name: 'main', title: 'Main Info', options: {columns: 2}}], fields: [ defineField({ name: 'name', title: 'Name', type: 'string', fieldset: 'main', validation: (Rule) => Rule.required(), }), defineField({ name: 'sortKey', title: 'Sorting Key', type: 'string', fieldset: 'main', validation: (Rule) => Rule.required(), }), defineField({ name: 'birthYear', title: 'Year of Birth', type: 'number', fieldset: 'main', }), defineField({ name: 'deathYear', title: 'Year of Death', type: 'number', fieldset: 'main', }), defineField({ name: 'slug', title: 'Slug', type: 'slug', fieldset: 'main', options: {source: 'name', maxLength: 96}, validation: (Rule) => Rule.required(), }), defineField({ name: 'image', title: 'Image', type: 'image', options: {hotspot: true}, }), defineField({ name: 'bio', title: 'Biography', type: 'array', of: [defineArrayMember({type: 'block'})], }), ], orderings: [ { title: 'First Name (A → Z)', name: 'nameAsc', by: [{field: 'name', direction: 'asc'}], }, { title: 'Last Name (A → Z)', name: 'sortKeyAsc', by: [{field: 'sortKey', direction: 'asc'}], }, { title: 'Year of Birth', name: 'yobAsc', by: [{field: 'birthYear', direction: 'asc'}], }, ], preview: { select: { title: 'name', birthYear: 'birthYear', deathYear: 'deathYear', media: 'image', }, prepare({title, birthYear, deathYear, media}) { const subtitle = birthYear ? deathYear ? `${birthYear}–${deathYear}` : birthYear.toString() : '' return {title, subtitle, media} }, }, })