@sanity/cli
Version:
Sanity CLI tool for managing Sanity installations, managing plugins, schemas and datasets
86 lines (83 loc) • 1.86 kB
JavaScript
import {defineField, defineType} from 'sanity'
import {MdLocalMovies as icon} from 'react-icons/md'
export default defineType({
name: 'movie',
title: 'Movie',
type: 'document',
icon,
fields: [
defineField({
name: 'title',
title: 'Title',
type: 'string',
}),
defineField({
name: 'slug',
title: 'Slug',
type: 'slug',
options: {
source: 'title',
maxLength: 100,
},
}),
defineField({
name: 'overview',
title: 'Overview',
type: 'blockContent',
}),
defineField({
name: 'releaseDate',
title: 'Release date',
type: 'datetime',
}),
defineField({
name: 'poster',
title: 'Poster Image',
type: 'image',
options: {
hotspot: true,
},
}),
defineField({
name: 'externalId',
title: 'External ID',
type: 'number',
}),
defineField({
name: 'popularity',
title: 'Popularity',
type: 'number',
}),
defineField({
name: 'castMembers',
title: 'Cast Members',
type: 'array',
of: [{type: 'castMember'}],
}),
defineField({
name: 'crewMembers',
title: 'Crew Members',
type: 'array',
of: [{type: 'crewMember'}],
}),
],
preview: {
select: {
title: 'title',
date: 'releaseDate',
media: 'poster',
castName0: 'castMembers.0.person.name',
castName1: 'castMembers.1.person.name',
},
prepare(selection) {
const year = selection.date && selection.date.split('-')[0]
const cast = [selection.castName0, selection.castName1].filter(Boolean).join(', ')
return {
title: `${selection.title} ${year ? `(${year})` : ''}`,
date: selection.date,
subtitle: cast,
media: selection.media,
}
},
},
})