94 lines
2.7 KiB
TypeScript
94 lines
2.7 KiB
TypeScript
import { defineType, defineArrayMember } from 'sanity'
|
|
|
|
export const blockContentType = defineType({
|
|
name: 'blockContent',
|
|
title: 'Контент',
|
|
type: 'array',
|
|
of: [
|
|
defineArrayMember({
|
|
type: 'block',
|
|
title: 'Блок',
|
|
styles: [
|
|
{ title: 'Обычный', value: 'normal' },
|
|
{ title: 'Заголовок 2', value: 'h2' },
|
|
{ title: 'Заголовок 3', value: 'h3' },
|
|
{ title: 'Заголовок 4', value: 'h4' },
|
|
{ title: 'Цитата', value: 'blockquote' },
|
|
],
|
|
lists: [
|
|
{ title: 'Маркированный', value: 'bullet' },
|
|
{ title: 'Нумерованный', value: 'number' },
|
|
],
|
|
marks: {
|
|
decorators: [
|
|
{ title: 'Жирный', value: 'strong' },
|
|
{ title: 'Курсив', value: 'em' },
|
|
{ title: 'Подчёркнутый', value: 'underline' },
|
|
{ title: 'Зачёркнутый', value: 'strike-through' },
|
|
{ title: 'Код', value: 'code' },
|
|
],
|
|
annotations: [
|
|
{
|
|
name: 'link',
|
|
type: 'object',
|
|
title: 'Ссылка',
|
|
fields: [
|
|
{
|
|
name: 'href',
|
|
type: 'url',
|
|
title: 'URL',
|
|
validation: (Rule) =>
|
|
Rule.uri({
|
|
allowRelative: true,
|
|
scheme: ['http', 'https', 'mailto', 'tel'],
|
|
}),
|
|
},
|
|
{
|
|
name: 'blank',
|
|
type: 'boolean',
|
|
title: 'Открывать в новой вкладке',
|
|
initialValue: false,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
}),
|
|
defineArrayMember({
|
|
type: 'image',
|
|
title: 'Изображение',
|
|
options: { hotspot: true },
|
|
fields: [
|
|
{
|
|
name: 'alt',
|
|
type: 'string',
|
|
title: 'Альтернативный текст',
|
|
description: 'Важно для SEO и доступности',
|
|
},
|
|
{
|
|
name: 'caption',
|
|
type: 'string',
|
|
title: 'Подпись',
|
|
},
|
|
],
|
|
}),
|
|
defineArrayMember({
|
|
type: 'code',
|
|
title: 'Код',
|
|
options: {
|
|
language: 'typescript',
|
|
languageAlternatives: [
|
|
{ title: 'TypeScript', value: 'typescript' },
|
|
{ title: 'JavaScript', value: 'javascript' },
|
|
{ title: 'HTML', value: 'html' },
|
|
{ title: 'CSS', value: 'css' },
|
|
{ title: 'Python', value: 'python' },
|
|
{ title: 'Bash', value: 'bash' },
|
|
{ title: 'JSON', value: 'json' },
|
|
],
|
|
withFilename: true,
|
|
},
|
|
}),
|
|
],
|
|
})
|