64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
import { defineField, defineType } from 'sanity'
|
||
|
||
export const authorType = defineType({
|
||
name: 'author',
|
||
title: 'Автор',
|
||
type: 'document',
|
||
icon: () => '👤',
|
||
fields: [
|
||
defineField({
|
||
name: 'name',
|
||
title: 'Имя',
|
||
type: 'string',
|
||
validation: (Rule) => Rule.required().min(2).max(100),
|
||
}),
|
||
defineField({
|
||
name: 'slug',
|
||
title: 'Slug',
|
||
type: 'slug',
|
||
options: {
|
||
source: 'name',
|
||
maxLength: 96,
|
||
},
|
||
validation: (Rule) => Rule.required(),
|
||
}),
|
||
defineField({
|
||
name: 'avatar',
|
||
title: 'Аватар',
|
||
type: 'image',
|
||
options: {
|
||
hotspot: true,
|
||
},
|
||
}),
|
||
defineField({
|
||
name: 'role',
|
||
title: 'Должность',
|
||
type: 'string',
|
||
description: 'Например: Председатель СО, Заместитель, Член совета',
|
||
}),
|
||
defineField({
|
||
name: 'bio',
|
||
title: 'Биография',
|
||
type: 'text',
|
||
rows: 4,
|
||
}),
|
||
defineField({
|
||
name: 'socialLinks',
|
||
title: 'Социальные сети',
|
||
type: 'object',
|
||
fields: [
|
||
{ name: 'vk', title: 'ВКонтакте', type: 'url' },
|
||
{ name: 'telegram', title: 'Telegram', type: 'url' },
|
||
{ name: 'email', title: 'Email', type: 'string' },
|
||
],
|
||
}),
|
||
],
|
||
preview: {
|
||
select: {
|
||
title: 'name',
|
||
subtitle: 'role',
|
||
media: 'avatar',
|
||
},
|
||
},
|
||
})
|