import {defineField, defineType} from 'sanity' export const releaseType = defineType({ name: 'release', title: 'Release', type: 'document', groups: [ {name: 'main', title: 'Main', default: true}, {name: 'media', title: 'Media'}, {name: 'text', title: 'Text'}, {name: 'links', title: 'Links'}, ], fieldsets: [ {name: 'albuminfo', title: 'Album'}, {name: 'main', title: 'Release Information', options: {columns: 2}}, {name: 'media', title: 'Media', options: {columns: 2}}, {name: 'text', title: 'Descriptions'}, {name: 'links', title: 'Links', options: {columns: 2}}, ], fields: [ defineField({ name: 'name', title: 'Title', type: 'string', group: 'main', fieldset: 'albuminfo', }), defineField({name: 'albumArtist', type: 'string', group: 'main', fieldset: 'albuminfo'}), defineField({ name: 'label', title: 'Label', type: 'string', group: 'main', fieldset: 'main', options: { list: [ {title: 'TRPTK', value: 'trptk'}, {title: 'Other', value: 'other'}, ], }, }), defineField({ name: 'catalogNo', title: 'Catalog #', type: 'string', group: 'main', fieldset: 'main', }), defineField({name: 'upc', title: 'UPC/EAN', type: 'string', group: 'main', fieldset: 'main'}), defineField({ name: 'releaseDate', title: 'Release Date', type: 'date', group: 'main', fieldset: 'main', }), defineField({name: 'albumCover', type: 'image', group: 'media', fieldset: 'media'}), defineField({ name: 'bookletPdf', title: 'Booklet PDF', type: 'file', options: {accept: 'application/pdf'}, group: 'media', fieldset: 'media', }), defineField({ name: 'shortDescription', title: 'Short Description', type: 'text', rows: 2, group: 'text', fieldset: 'text', }), defineField({ name: 'description', title: 'Description', type: 'array', of: [{type: 'block'}], group: 'text', fieldset: 'text', }), defineField({ name: 'spotifyUrl', title: 'Spotify', type: 'url', group: 'links', fieldset: 'links', }), defineField({ name: 'appleMusicUrl', title: 'Apple Music', type: 'url', group: 'links', fieldset: 'links', }), defineField({ name: 'deezerUrl', title: 'Deezer', type: 'url', group: 'links', fieldset: 'links', }), defineField({ name: 'amazonMusicUrl', title: 'Amazon Music', type: 'url', group: 'links', fieldset: 'links', }), defineField({name: 'tidalUrl', title: 'Tidal', type: 'url', group: 'links', fieldset: 'links'}), defineField({name: 'qobuzUrl', title: 'Qobuz', type: 'url', group: 'links', fieldset: 'links'}), defineField({ name: 'nativeDsdUrl', title: 'NativeDSD', type: 'url', group: 'links', fieldset: 'links', }), ], orderings: [ { title: 'Release Date (latest first)', name: 'releaseDateDesc', by: [{field: 'releaseDate', direction: 'desc'}], }, { title: 'Release Date (oldest first)', name: 'releaseDateAsc', by: [{field: 'releaseDate', direction: 'asc'}], }, { title: 'Catalog # (Asc.)', name: 'catalogNoAsc', by: [{field: 'catalogNo', direction: 'asc'}], }, { title: 'Catalog # (Desc.)', name: 'catalogNoDesc', by: [{field: 'catalogNo', direction: 'desc'}], }, ], preview: { select: { title: 'name', artist: 'albumArtist', catNo: 'catalogNo', media: 'albumCover', }, prepare({title, artist, catNo, media}) { return { title: `${title} • ${catNo}` || '(Untitled release)', subtitle: artist ? artist : '', media, } }, }, })